Перенаправить ответ от подписчика на событие в Symfony PHP - PullRequest
0 голосов
/ 11 ноября 2018

Я пытаюсь вернуть постоянный (301) ответ перенаправления от подписчика событий, подключенного к событиям ядра в Synfony PHP.

Мой подписчик выглядит следующим образом:

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 голосов
/ 11 ноября 2018

Должно быть что-то вроде:

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