Мне нужно проверить сессию пользователей на нескольких маршрутах в моем проекте.Поэтому я использовал прослушиватель контроллера и искал каждый запрос, если контроллер является экземпляром данного интерфейса.Если это правда, я проверю сеанс, и если он недействителен, пользователь должен быть перенаправлен на другой контроллер, где сеанс будет восстановлен.Я использовал этот метод, метод, описанный здесь
Это код, который я использую:
public function onKernelController(FilterControllerEvent $event)
{
$controller = $event->getController();
if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType())
{
if (!is_array($controller))
return;
$controllerObject = $controller[0];
if ($controllerObject instanceof PreControllerInterface)
{
$result = $controllerObject->initialize($event->getRequest());
if($result != null)
{
$ctrl = new PublicFrontendController();
$event->setController(array($ctrl, 'identifyAction'));
}
}
}
}
Проблема в том, что я получаю следующую ошибку:
Неустранимая ошибка: вызов функции-члена get () для необъекта в C: \ Users \ Йогурт \ Веб-сайты \ Mobile \ vendor \ symfony \ src \ Symfony \ Bundle \ FrameworkBundle \ Controller \ Controller.phpв строке 189
Я думаю, что мой вызываемый контроллер пытается получить доступ к службе, но этот экземпляр контроллера не может получить доступ к элементу контейнера, потому что он пуст.К сожалению, я не знаю, как это исправить.Кто-нибудь знает, как я могу заставить это работать?
С наилучшими пожеланиями, Феликс