2017-10-30 2 views
0

Ich habe ein Problem mit einem hörenden Ereignis beim Ändern des Passwortes zu übermitteln.FOS User Change Password Event Listener

Hier Zuhörer

public function __construct(
    UrlGeneratorInterface $router, 
    Session $session, 
    TokenStorageInterface $tokenStorage 
) { 
    $this->router = $router; 
    $this->session = $session; 
    $this->tokenStorage = $tokenStorage; 
} 

public static function getSubscribedEvents() 
{ 
    return [ 
     FOSUserEvents::CHANGE_PASSWORD_SUCCESS => [ 
      ['onChangePasswordSuccess', +10000] 
     ], 
    ]; 
} 

public function onChangePasswordSuccess(GetResponseUserEvent $event) 
{ 
    $this->tokenStorage->setToken(); // logout user 
    $this->session->invalidate(); 
    $event->setResponse(new RedirectResponse($this->router->generate('fos_user_security_login'))); 
} 

Aber nichts passiert. Ich habe Debugger Breakpoint auf $ this-> tokenStorage-> setToken() gesetzt, aber es war nicht halt. Könnte jemand mir helfen, herauszufinden, warum das nicht funktioniert

+0

Hast du diesen Listener in 'services.yml' registriert? Kannst du seine Konfiguration zeigen? –

+0

CoreBundle \ EventListener \ ChangePasswordListener: Tags: - {Name: kernel.event_subscriber} Zuerst habe ich das aber und es hat nicht funktioniert. Dann habe ich entfernt, weil ich autowire benutze und auch nicht funktioniert –

+0

Ich denke, Sie sollten etwas wie das in Ihrer Dienste-Konfiguration hinzufügen .. https://gist.github.com/kaduev13/b569ed0d53af70a4bc697bf7ee88c8bc –

Antwort

0

Hahaha. Ich habe einen falschen Controller gefunden. Als ich Recht fand, hat alles so funktioniert, wie es sollte. Danke Ivan für deine Hilfe