在laravel 5.3中使全局用户变量

时间:2016-09-28 14:59:40

标签: laravel

我有这段代码

Controller.php
    public function __construct()
    {
        $this->user = Auth::user();
        view()->share('user', $this->user );
    }

HomeController.php
    public function __construct()
    {
        $this->middleware('auth');
        parent::__construct();
    }

它没有用,所以我用调试器调试它,我看到Auth :: user()只在完成构建后返回一个用户。 即在HomeController @ index()函数中 知道怎么解决吗?

2 个答案:

答案 0 :(得分:4)

以前在laravel 5.2中工作,但是在laravel 5.3中,您无法再在控制器的构造函数中访问会话变量或经过身份验证的用户。所以他们提供了一个看起来像这样的工作:

public function __construct()
{
    $this->middleware(function ($request, $next) {
        $this->user = Auth::user();

        return $next($request);
    });
}

https://laravel.com/docs/5.3/upgrade#5.3-session-in-constructors

答案 1 :(得分:1)

您可以全局使用auth()->user()Auth::user(),而无需创建任何变量。您甚至可以在视图中使用它。

将整个User对象存放在变量,会话等中是一个很好的想法。