所以我通常使用Auth::user()
来获取当前用户,当我确定用户是否实际登录Auth::check
时。但是,这似乎不适用于我的AppServiceProvider
。我用它来跨所有视图共享数据。登录后我var_dump
Auth::user()
和Auth::check()
我NULL
和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'));
}
答案 0 :(得分:18)
Laravel会话在中间件中初始化,因此您无法从服务提供商访问会话,因为他们在请求生命周期中中间件之前执行
您应该使用中间件来分享会话中的变量
如果由于其他原因你想在服务提供商中进行,你可以使用带有回调的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 );
});
}
只有在实际编写视图时才会执行回调,因此中间件将被执行并且会话将可用
答案 1 :(得分:3)
在 legacy subid converted licPart count
Ent 100 EP Lic E-LTU 7ks7gp-qc42sn-g7zk0q-7pzmb7-xdp6yb NL AC CE E-LTU LIC-CP-EN-100 50
Ent 100 EP Lic E-LTU 7ks7gp-qc42sn-g7zk0q-7pzmb7-xdp6yb NL OB USR E-LTU LIC-CP-EN-100 25
Ent 100 EP Lic E-LTU 7ks7gp-qc42sn-g7zk0q-7pzmb7-xdp6yb NL OG EP E-LTU LIC-CP-EN-100 25
Ent 100 EP Lic E-LTU 7ks7gp-qc42sn-g7zk0q-7pzmb7-xdp6yb NL AC CE E-LTU LIC-CP-EN-100 25
Ent 100 EP Lic E-LTU 7ks7gp-qc42sn-g7zk0q-7pzmb7-xdp6yb NL OB USR E-LTU LIC-CP-EN-100 25
Ent 100 EP Lic E-LTU 7ks7gp-qc42sn-g7zk0q-7pzmb7-xdp6yb NL OG EP E-LTU LIC-CP-EN-100 50
Ent 1K EP Lic E-LTU 7ks7gp-qc42sn-g7zk0q-7pzmb7-xdp6yb NL AC CE E-LTU LIC-CP-EN-1K 375
Ent 1K EP Lic E-LTU 7ks7gp-qc42sn-g7zk0q-7pzmb7-xdp6yb NL OB USR E-LTU LIC-CP-EN-1K 375
Ent 1K EP Lic E-LTU 7ks7gp-qc42sn-g7zk0q-7pzmb7-xdp6yb NL OG EP E-LTU LIC-CP-EN-1K 250
的{{1}}函数中编写这些代码行
AuthServiceProvider
此处boot()
表示 - 在您的所有观看中public function boot()
{
view()->composer('*', function($view)
{
if (Auth::check()) {
$view->with('currentUser', Auth::user());
}else {
$view->with('currentUser', null);
}
});
}
变量都可用。
然后,如果用户通过身份验证,则从视图文件*
将为您提供用户信息,否则为null。
答案 2 :(得分:0)
根据我的 Laravel 7 经验,Auth::user()
在 AppServiceProvider.php
中不起作用,而是辅助函数 auth()->user()
对我有用。
public function boot()
{
if (auth()->check()) {
View::composer('layout.app', function ($view) {
$userName = auth()->user()->name;
$view->with(['userName' => $userName]);
});
}
}