我创建了一个BaseController
来共享用户信息,但这不起作用。 Auth::user()->id
和Auth::user()->email
为空。
我如何存档?什么是最好的方法?
class BaseAdminController extends Controller{
public function __construct()
{
$this->initMenu();
}
private function initMenu()
{
View::share('userinfo', (object) ['id' => Auth::User()->id, 'email' => Auth::User()->email]);
}
}
答案 0 :(得分:3)
您可以通过中间件来实现,因为您无法在控制器的构造函数中访问会话或经过身份验证的用户,因为middlware还没有运行:
class BaseAdminController extends Controller{
public function __construct()
{
$this->middleware(function ($request, $next) {
$this->initMenu();
return $next($request);
});
}
private function initMenu()
{
View::share('userinfo', (object) ['id' => Auth::User()->id, 'email' => Auth::User()->email]);
}
}
答案 1 :(得分:0)
您可以使用视图助手功能轻松分享内容。也许这会对你有所帮助:
view()->share('userinfo', [...data to pass in an array...]);
或
view()->share('user', Auth::user());
这是一个例子!只需将您想要的信息传递给视图,就像您在示例中所做的那样。但只是传递数组,而不是将其转换为对象等等。