所以我通常让当前用户使用Auth::user()
当我确定用户是否实际登录时Auth::check
。但这似乎不适用于我的AppServiceProvider
。我用它来跨所有视图共享数据。我var_dump
both Auth::user()
and Auth::check()
登录后我得到NULL
and false
.
我怎样才能让当前用户进入我的AppServiceProvider
?如果这是不可能的,那么如何获取每个用户唯一的数据(根据用户的不同而不同的数据)user_id
)跨越所有视图。这是我的代码以供澄清。
if (Auth::check()) {
$cart = Cart::where('user_id', Auth::user()->id);
if ($cart) {
view()->share('cart', $cart);
}
} else {
view()->share('cartItems', Session::get('items'));
}
Laravel 会话是在中间件中初始化的,因此您无法从服务提供商访问会话,因为它们执行before请求生命周期中的中间件
您应该使用中间件来共享会话中的变量
但是,如果出于其他原因您想在服务提供商处执行此操作,则可以使用查看作曲家 https://laravel.com/docs/5.4/views#view-composers带有回调,如下所示:
public function boot()
{
//compose all the views....
view()->composer('*', function ($view)
{
$cart = Cart::where('user_id', Auth::user()->id);
//...with this variable
$view->with('cart', $cart );
});
}
仅当视图实际组合时才会执行回调,因此中间件将已经执行并且会话将可用
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)