Bonjour,

Je voudrais ajouter un listener qui déclenche après validation du formulaire d'inscription de FOSUSER

J'ai donc dans mon bundle UserBundle en parent de FOSUER crée un service
src\Gallery\UserBundle\Resources\config\services.yml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
services:
    gallery_user.registration_complet:
        class: Gallery\UserBundle\EventListener\RegistrationListener
        arguments:  [@doctrine.orm.entity_manager]
        tags:    
             - { name: kernel.event_subscriber  }
J'importe mon service :
\app\config\config.yml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
imports:
../..
    - { resource: "@GalleryUserBundle/Resources/config/services.yml" }
Et donc ci dessous ma classe qui devrait s’exécuter à chaque validation du formulaire d'inscription de FOSUSER
src\Gallery\UserBundle\EventListener\RegistrationListener.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
class RegistrationListener implements EventSubscriberInterface
{
     protected $container;
      protected $em;
 
 
     public function __construct(EntityManager $em)           
    {
         echo 'line ' . __LINE__ . " XXX  " . __FILE__;
          $this->em = $em;
 
    }
 
    public static function getSubscribedEvents()
    {
      echo 'line ' . __LINE__ . " XXX  " . __FILE__;
        return array(
            FOSUserEvents::REGISTRATION_CONFIRMED => 'onRegistrationSuccess',
            FOSUserEvents::REGISTRATION_SUCCESS => 'setRole',
            FormEvents::POST_SUBMIT => 'setRole2'
        );
    }
 
    public function onRegistrationSuccess(\FOS\UserBundle\Event\FormEvent $event)
    {
           echo 'line ' . __LINE__ . " XXX  " . __FILE__;
          die();
    }
 
     public function onKernelController(  $event)
    {
           echo 'line ' . __LINE__ . " XXX  " . __FILE__;
          die();
    }
 
    public function setRole( FormEvent $event)
    {
         echo 'line ' . __LINE__ . " XXX  " . __FILE__;
        die();
   }
    public function  setRole2( FormEvent $event)
    {
        echo 'line ' . __LINE__ . " XXX  " . __FILE__;
        die();
  }
}
Donc si je fais php/console container:debug, je trouve bien mon service
gallery_user.registration_complet Gallery\UserBundle\EventListener\RegistrationListener

Apparemment le service est bien enregistré,
le constructeur et onKernelController sont bien exécutés.

Normalement à chaque validation d'un formation, une des méthodes ajoutées par getSubscribedEvents (onRegistrationSuccess, setRole, setRole2) devrait déclencher non ?
Cependant aucune de ces méthodes n'est exécutées. L'inscription se déroule doncnormalement et ma méthode qui vise à ajouter un rôle n'est jamais exécutée.

Mais malgré mes heures et mes jours de recherches je n'arrive à rien ! J'ai oublié quelque chose ou alors?
Merci pour vos réponses.
Pi