Причина, по которой он не будет работать в вашем методе __construct()
, заключается в том, что промежуточное программное обеспечение StartSession
еще не было запущено.
Чтобы обойти это, вы можете просто использовать метод middleware()
на контроллере:
public function __construct()
{
$this->middleware(function ($request, $next) {
$userdata = $request->session()->get('userdata');
view()->share(compact('userdata'));
return $next($request);
});
}
Руководство по обновлению Laravel 5.3 (прокрутите вниз раздел Контроллеры )
В Laravel 5.3 вы не можете получить доступ к сеансу или аутентифицированному пользователю в конструкторе вашего контроллера, потому что промежуточное ПО еще не запущено.
В качестве альтернативы вы можете определить промежуточное программное обеспечение на основе Closure непосредственно в конструкторе вашего контроллера.