Laravel - 在所有视图之间共享数据

时间:2016-10-05 14:06:36

标签: laravel

我正在使用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>

2 个答案:

答案 0 :(得分:2)

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

此外,您不需要为Auth::user()auth()->user()创建单独的变量,因为您已经可以在开箱即用的所有视图中使用这些变量。

答案 1 :(得分:1)

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

尝试这种方式,不要忘记使用Auth;

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

代替你的

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

可以帮助你的Article

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

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

就是这样。