@Tereverda

Laravel нет доступа к сессии в конструкторе контроллера?

Создал отдельный файл с маршрутами
<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\PageController;

Route::middleware(['web'])->group(function () {
    // Главная
    Route::get('/', [PageController::class, 'main']);
});


Подключил в сервис провайдере RouteServiceProvider.php
$this->routes(function () {
            Route::middleware('api')
                ->prefix('api')
                ->group(base_path('routes/api.php')); // Маршруты API

            Route::middleware('web')->group(base_path('routes/page.php')); // тут


Тут экшен страницы, в классе своего конструктора нет,вызывается материнский
class PageController extends AbstractController
{
    public function main(): View
    {
        // Подгружаем шаблон
        return view('/pages/main', $this->dataTemplate);
    }


В материнском контроллере AbstractController в конструкторе выходит ошибка
namespace App\Http\Controllers;
use Illuminate\Http\Request;

abstract class AbstractController extends Controller
{
    public function __construct(Request $request)
    {
      $value = $request->session()->get('key');
    }
}


Текст ошибки Session store not set on request.
Не понимаю, на каком уровне делаю не так?
  • Вопрос задан
  • 67 просмотров
Решения вопроса 1
yesbro
@yesbro
Думаю, помогаю думать
Вроде с версии Laravel 5.3 сессия внутри конструктора контроллера недоступна. Когда это было впервые сделано было много обсуждений на эту тему.

Посмотри вот эти хаки https://stackoverflow.com/questions/41542802/larav... что-то должно помочь :)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы