来自Symfony PHP中事件订阅者的重定向响应

时间:2018-11-11 00:24:04

标签: php symfony symfony4 php-7.2

我正试图从挂接到Synfony PHP内核事件中的事件订阅者返回永久(301)重定向响应。

我的订阅者如下:

use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;

use Symfony\Component\HttpFoundation\RedirectResponse;

class KernelSubscriber implements EventSubscriberInterface {

    public function __construct() {

        // some stuff here but not relevant for this example
    }

    public static function getSubscribedEvents(): array {

        return [ KernelEvents::REQUEST => 'onRequest' ];
    }

    public function onRequest(GetResponseEvent $event): void {

        // if conditions met
        //     301 redirect to some internal or external URL

        if(!$event->isMasterRequest()) return;
    }   
}

如果这是一个控制器,我将返回$this->redirectToRoute('route')或类似的东西,但是从onRequest方法返回的情况则大不相同。

如何从该事件订阅者返回响应(尤其是重定向)?

1 个答案:

答案 0 :(得分:3)

应该是这样的:

$event->setResponse(new RedirectResponse($route));