Symfony2 redirect for event listener? Symfony2 redirect for event listener? symfony symfony

Symfony2 redirect for event listener?


If you wanna redirect from FilterControllerEvent you should use this one:

public function onKernelController(FilterControllerEvent $event){    // do something    $event->setController(function() use ($redirectUrl) {        return new RedirectResponse($redirectUrl);    });}


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')));}