Symfony EventSubscriber игнорируется в Symfony 3.4 - PullRequest
1 голос
/ 23 октября 2019

Я пытаюсь использовать подписчика на событие, чтобы перенаправить человека, регистрирующегося на другой маршрут, на который его не направляет стандартный пакет FOSUser. Продолжая некоторые уроки для Symfony 3.3, но мне стало интересно, так как у меня версия 3.4, нужно ли что-то менять, чтобы она работала, так как в настоящее время она просто переходит на стандартную страницу? Спасибо

EventSubscriber

      namespace eventsBundle\EventListener;


      use Symfony\Component\EventDispatcher\EventSubscriberInterface;
      use Symfony\Component\Security\Http\Util\TargetPathTrait;
      use Symfony\Component\Routing\RouterInterface;
      use FOS\UserBundle\Event\FormEvent;
      use Symfony\Component\HttpFoundation\RedirectResponse;
      use FOS\UserBundle\FOSUserEvents;

      class RedirectAfterRegistrationSubscriber implements 
      EventSubscriberInterface
      {

      use TargetPathTrait;
      private $router;
      public function __construct(RouterInterface $router)
      {
      $this->router = $router;
      }

      public function onRegistrationSuccess(FormEvent $event)
      {
     die();
     // main is your firewall's name
     $url = $this->getTargetPath($event->getRequest()->getSession(), 
     'main');

     if (!$url) {
        $url = $this->router->generate('homepage');
     }

     $response = new RedirectResponse($url);
     $event->setResponse($response);
     }

     public static function getSubscribedEvents()
     {
     return [
        FOSUserEvents::REGISTRATION_SUCCESS => 
        ['onRegistrationSuccess',-5]
    ];
   }
  }

services.yml

 services:
         _defaults:
         autowire: true
         autoconfigure: true        

eventsBundle\:
    resource: '../../src/eventsBundle/*'
    exclude: '../../src/eventsBundle/{Entity,Repository,Tests}'

eventsBundle\EventListener\RedirectAfterRegistrationSubscriber:
    autowire: true

Я добавил die ();просто чтобы убедиться, что это происходит, но не имеет никакого эффекта

Ответы [ 2 ]

1 голос
/ 25 октября 2019

Файл services.yml, который нужно изменить, - это файл в моем комплекте, а не основной файл services.yml в app / config, теперь он получает EventSubscriber

0 голосов
/ 23 октября 2019

Похоже, вам нужно добавить тег для вашего подписчика.

eventsBundle\EventListener\RedirectAfterRegistrationSubscriber:
    autowire: true 
    tags:
        - { name: kernel.event_subscriber }
...