Redirection event listener Symfony

Par MegLy, il y a 8 ans


Bonjour,

j'ai un problème de redirection avec mon programme, j'ai l'erreur suivante :
Attempted to call an undefined method named "setResponse" of class "Symfony\Component\Security\Http\Event\InteractiveLoginEvent"

j'aimerai en fait être rediriger vers la page d'index ou homepage lorsque je ne possède pas de nom de domaine.
Voici mon code :

class LoginListener implements EventSubscriberInterface ...... public function __construct(EntityManager $e, ContainerInterface $cont,UrlGeneratorInterface $rout) { $this->em = $e; $this->router = $rout; $this->container = $cont; } /** * {@inheritDoc} */ public static function getSubscribedEvents() { return array( FOSUserEvents::SECURITY_IMPLICIT_LOGIN => 'onSecurityInteractiveLogin', ); } public function onSecurityInteractiveLogin(InteractiveLoginEvent $event) { $session = $event->getRequest()->getSession(); $user = $this->container->get('security.context')->getToken()->getUser(); $route = 'homepage'; $url = $this->router->generate($route);generate($route); if(!$session->get('sessionDomaine')) { $this->container->get('security.context')->setToken(null); $session->getFlashBag()->add('error', 'Veuillez saisir un nom de domaine'); $response = new RedirectResponse($url); $event->setResponse($response); } else { $domaine = $session ->get('sessionDomaine'); $sql = "SELECT u FROM ApplicationSonataUserBundle:User u LEFT JOIN u.domaines d WHERE d.nom= ?1 AND u.id = ?2" ; $query = $this->em->createQuery($sql); $query->setParameter(1, $domaine->getNom()); $query->setParameter(2, $user->getId()); $result = $query->getOneOrNullResult(); if(!$result) { $this->container->get('security.context')->setToken(null); $session->getFlashBag()->add('error', 'Vous n\'appartenez pas à ce domaine'); } } } }

mon service :

app.form.login_utilisateur_listener: class: AppBundle\EventListener\LoginListener arguments: ["@doctrine.orm.entity_manager","@service_container","@router"] tags: - { name: kernel.event_listener, alias: app_user_login, event: security.interactive_login, method: onSecurityInteractiveLogin}

Je voudrais savoir comment résoudre ce problème de redirection, je ne comprends pas pourquoi cela ne fonctionne pas.

Je vous remercie

1 réponse