在 laravel 5.4 中为经过身份验证的用户创建全局变量

Create global variable for authenticated user in laravel 5.4

在 laravel 5.4 登录后,我可以在每个控制器中访问 Auth::user()。但我想把它作为全局变量,可以在所有控制器和视图中使用。

在 google 之后,我测试了以下代码。 1) AppServiceProvider.php

public function boot()
{     
    View::share('currentUser', Auth::user()); 
}

但是在视图中无法访问

2) app\Http\Controllers\Controller.php

private $user;
private $signed_in;

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

        view()->share('signed_in', $this->signed_in);
        view()->share('user', $this->user);

        return $next($request);
    });

}

但是在视图中无法访问

谁能帮忙提前谢谢。

我使用第二种技术得到了解决方案。

2) app\Http\Controllers\Controller.php

这个控制器是basecontroller

private $user;
private $signed_in;

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

        view()->share('signed_in', $this->signed_in);
        view()->share('user', $this->user);

        return $next($request);
    });

}

我必须在每个控制器构造函数中添加以下代码 parent::__construct();

例如:

class StatusController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');

        parent::__construct();
    }
}

现在我可以在任何视图中访问了

{{ $user->user_id }}