Laravel分享Auth :: User()信息

时间:2017-10-20 07:11:43

标签: laravel-5

我创建了一个BaseController来共享用户信息,但这不起作用。 Auth::user()->idAuth::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]);
    }
}

2 个答案:

答案 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());

这是一个例子!只需将您想要的信息传递给视图,就像您在示例中所做的那样。但只是传递数组,而不是将其转换为对象等等。