Мне нужно проверить сеанс моих пользователей на нескольких маршрутах в моем проекте. Поэтому я использовал прослушиватель контроллера и искал каждый запрос, если контроллер является экземпляром данного интерфейса. Если это правда, я проверю сеанс, и если он недействителен, пользователь должен быть перенаправлен на другой контроллер, где сеанс будет восстановлен. Я использовал этот метод, метод, описанный hereКонтроллер обмена Symfony2 не работает
Это код, я использую:
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'));
}
}
}
}
Проблема в том, что я получаю следующее сообщение об ошибке:
Fatal error: Call to a member function get() on a non-object in C:\Users\Yoghurt\Websites\Mobile\vendor\symfony\src\Symfony\Bundle\FrameworkBundle\Controller\Controller.php on line 189
Я думаю, мой называется контроллер пытается доступ к службе, но этот экземпляр контроллера не может получить доступ к элементу контейнера, потому что он пуст. К сожалению, я не знаю, как это исправить. Кто-нибудь знает, как я могу это сделать?
С наилучшими пожеланиями Felix