【问题标题】:Laravel - share data between all viewsLaravel - 在所有视图之间共享数据
【发布时间】:2016-10-05 22:36:00
【问题描述】:

我使用的是 Laravel 5.2 版本,我尝试在所有视图之间共享数据,但由于某种原因我无法让它工作。在我的 Controller.php __construct function 我已经这样设置了,但这不起作用:

<?php

namespace App\Http\Controllers;

use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesResources;

class Controller extends BaseController
{
    use AuthorizesRequests, AuthorizesResources, DispatchesJobs, ValidatesRequests;

    public function __construct()
    {
        view()->share('user', Auth::user());
     }
}

我正在尝试像这样在导航部分中呈现它:

<li>{{ $user->name }}</li>

【问题讨论】:

  • 如果您正在访问当前经过身份验证的用户,您不能只使用{{ Auth:user()-&gt;name }} 吗?
  • 不,这样也不会渲染任何内容
  • 我认为您需要将use Auth;(或在您的版本中有效的内容。我使用5.3 及其use Illuminate\Support\Facades\Auth;)在您的控制器中

标签: laravel


【解决方案1】:

您应该为此创建service provider 或使用view composers

此外,您无需为Auth::user()auth()-&gt;user() 创建单独的变量,因为您已经可以在所有开箱即用的视图中使用它们。

【讨论】:

    【解决方案2】:

    编辑 2: 出于安全原因,您无法在 Controller.php 中获取 Auth,但您可以创建从 Controller 扩展的 CustomController.php,并且您的其他控制器必须从 CustomController 扩展,在 Custom控制器,您可以使用 Auth,并与所有视图共享 $user。

    试试这个方法,别忘了使用 Auth;

    View::share('user', Auth::user());
    

    代替你的

    view()->share('user', Auth::user());
    

    还有可以帮助你的Article

    编辑:我已经在我的 Laravel 5 应用程序中尝试过,只需输入

     \View::share('user', Auth::user());
    

    就是这样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-14
      • 2015-06-04
      • 1970-01-01
      • 1970-01-01
      • 2019-04-19
      相关资源
      最近更新 更多