gpt4 book ai didi

php - Laravel - 如何在 AppServiceProvider 中获取当前用户

转载 作者:IT王子 更新时间:2023-10-29 00:02:05 28 4
gpt4 key购买 nike

因此,我通常使用 Auth::user() 获取当前用户,并在确定用户是否实际登录时使用 Auth::check。然而,这在我的 AppServiceProvider 中似乎不起作用。我正在使用它在所有 View 之间共享数据。我在登录时 var_dump Auth::user()Auth::check() 都得到了 NULLfalse

如何让当前用户进入我的 AppServiceProvider ?如果那不可能,那么在所有 View 中获取每个用户唯一的数据(根据 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 session 在中间件中初始化,因此您无法从服务提供者访问 session ,因为它们在请求生命周期中之前中间件执行

您应该使用中间件来共享 session 中的变量

但是,如果出于某些其他原因您想在服务提供商处执行此操作,则可以使用 view composer 来执行此操作带有回调,如下所示:

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 );
});
}

只有当 View 真正被组合时才会执行回调,因此中间件已经执行并且 session 可用

关于php - Laravel - 如何在 AppServiceProvider 中获取当前用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37372357/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com