В новом laravel я не могу получить сессию в конструкторе. Зачем?
public function __construct() { dd(Session::all()); //this is empty array }
а затем ниже
public function index() { dd(Session::all()); //here works }
В старом laravel я помню, что не было этой проблемы. что-то изменилось?
Вы не можете сделать это по умолчанию с помощью Laravel 5.3. Но когда вы редактируете Kernel.php
и меняете protected $middleware = [];
к следующему, это будет работать.
protected $middleware = [ \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, ]; protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, ], 'api' => [ 'throttle:60,1', 'bindings', ], ];
Надеюсь, это сработает!
В Laravel 5.3 связанные функции не будут работать в конструкторе контроллера , поэтому вы должны переместить всю связанную с сеансами логику методам.