Я хочу перенаправить пользователя в другую форму сразу после регистрации, прежде чем он сможет получить доступ к чему-либо на моем веб-сайте (например, https://github.com/FriendsOfSymfony/FOSUserBundle/issues/387).
Итак, я создаю eventListener, как в документе:
<?php
namespace rs\UserBundle\EventListener;
use FOS\UserBundle\FOSUserEvents;
use FOS\UserBundle\Event\UserEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
/**
* Listener responsible to change the redirection at the end of the password resetting
*/
class RegistrationConfirmedListener implements EventSubscriberInterface
{
private $router;
public function __construct(UrlGeneratorInterface $router)
{
$this->router = $router;
}
/**
* {@inheritDoc}
*/
public static function getSubscribedEvents()
{
return array(
FOSUserEvents::REGISTRATION_CONFIRMED => 'onRegistrationConfirmed'
);
}
public function onRegistrationConfirmed()
{
$url = $this->router->generate('rsWelcomeBundle_check_full_register');
$response = new RedirectResponse($url);
return $response;
}
}
Services.yml:
services:
rs_user.registration_completed:
class: rs\UserBundle\EventListener\RegistrationConfirmedListener
arguments: [@router]
tags:
- { name: kernel.event_subscriber }
Но он не работает, пользователь регистрируется, он нажимает ссылку подтверждения в своем почтовом ящике, он не перенаправляется на страницу, которую я хочу, он зарегистрирован, и у меня есть сообщение, в котором говорится, что учетная запись подтверждена.
Почему это не перенаправляет меня на маршрут: rsWelcomeBundle_check_full_register, как я хочу?
Спасибо