[Symfony 4] – Gestion d’événements

On continue notre série de gestion des utilisateurs sans FOSUserBundle, cette fois on va mettre en place un EventListener, c’est à dire un événement qui va se déclencher là où on le voudra.

On va simplement envoyer un mail à l’utilisateur qui vient de s’inscrire afin de lui souhaiter la bienvenue.

Pour cela on va déjà ajouter la librairie qui permet de gérer l’envoi des mails :

Suite à ça vous devez avoir une nouvelle ligne dans votre fichier .env, qu’il faut modifier selon votre serveur, pour moi c’est :

(vous avez aussi la même ligne dans le fichier phpunit.xml.dist si vous voulez envoyer des mails durant vos tests)

On va aussi ajouter quelques paramètres dans nos fichiers de config, comme l’adresse expéditeur :

Pour mettre en place de bonnes pratiques, on va créer un fichier qui regroupera tous nos events, ça permettra de les avoir tous au même endroit :

On créé maintenant notre Listener, il n’y a rien de compliqué :

Et enfin on modifie notre Controller pour juste y ajouter le déclenchement de notre event :

and voilà !

Vous pouvez retrouver toutes les sources ici :

https://github.com/gponty/userDemo

14 commentaires

  1. Bonjour, j’ai essayer d’adapter votre méthode à mon site internet en construction et j’ai une erreur lorsque je lance le serveur :

    In RegisterControllerArgumentLocatorsPass.php line 159:

    Cannot determine controller argument for « App\Controller\RegistrationController::registerAction() »: the $eventDispatcher argument is type-hinted with the non-existent class or interface: « App\Controller\EventDispatcherInterface ».
    Did you forget to add a use statement?

    Cependant dans votre tutoriel il n’est pas question de créer un autre controller, pourriez vous m’éclairer

  2. mercii pour le tuto j’ai pas d’erreur mais ca ne send pas dans mon boite mail es ce je doit prendre ceci MAILER_URL=smtp://localhost:25?encryption=&auth_mode=

  3. Salut et merci pour les tutos !

    J’aimerais savoir comment faire pour simplement faire en sorte que le Password saisi lors de l’enregistrement qu’ils remplissent les conditions min-max length entre 8-15 caractères, 1Maj, 1Min et un caractères spécial ? J’ai beau chercher mais je ne trouve pas :/

    Merci !

  4. Bonjour,

    super tuto, tout fonctionne chez dans la mise en place.
    Il y a juste un loupé je pense : Dans le tuto 3, tu finis par
    « Dans le prochain chapitre nous verrons comment l’utilisateur peur modifier son mot de passe et le modifier si il l’a oublié. »

    Hors dans le chapitre 3.5 et 4 tu n’en parles pas.

    Est-ce prévu dans un chapitre 5 à venir ?

      1. Merci pour ta réponse 🙂
        Mais du coup les gens n’ont pas forcément le reflex de faire ca !
        C’est pas très grave, en le faisant sans l’event mais directement dans le controller ca marche !
        C’est pour savoir si il manquait un réglage :p

  5. Bonjour,

    J’ai également un erreur en suivant le tuto (avec Symfony 4.1.4) :

    Cannot autowire service « App\RegistrationNotifySubscriber\RegistrationNotifySubscriber »: argument « $sender » of method « __construct() » has no type
    -hint, you should configure its value explicitly.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.