Symfony2 redirect for event listener?
You can't set a response to a FilterControllerEvent
object. You need to listen for the kernel.request
event because its GetResponseEvent
object has the setResponse()
method:
$route = 'route_name';if ($route === $event->getRequest()->get('_route')) { return;}$url = $this->router->generate($route);$response = new RedirectResponse($url);$event->setResponse($response);
More ore less clear way to redirect on 'kernel.controller' event
public function onKernelController(FilterControllerEvent $event){ /* @var $controller \Symfony\Bundle\FrameworkBundle\Controller\Controller */ $controller = $event->getController()[0]; // PHP 5.4 or $controller = $controller[0]; throw new HttpException(307, null, null, array('Location' => $controller->generateUrl('homepage')));}