2013-08-01 3 views
1

J'utilise le FOSUser Bundle comme classe de base pour ma propre classe User. Grâce à un webservice, il est possible de créer de nouveaux utilisateurs. Pour autant que je sache, il n'est déclenché que lorsqu'un utilisateur s'enregistre via le formulaire d'inscription.FOSUser Bundle confirmation de déclenchement manuel email

Existe-t-il un moyen de déclencher manuellement l'e-mail de confirmation à partir d'un contrôleur?

+0

Avez-vous essayé quoi que ce soit ou des recherches sur la docs/GitHub? –

+0

Oui, mais il ne semble pas y avoir de déclencheur. –

Répondre

1

Il semble qu'il n'y ait aucune solution pour déclencher manuellement l'envoi de l'email de confirmation. C'est seulement déclenché en combinaison avec l'enregistrement de. Ce que j'ai fini par faire est de truquer un formulaire et l'envoi de celui-ci pour déclencher l'écouteur de l'événement responsable de l'envoi de l'e-mail.

//use FOS\UserBundle\FOSUserEvents; 
//use FOS\UserBundle\Event\FormEvent; 

$formFactory = $this->get('fos_user.registration.form.factory'); 
$form = $formFactory->createForm(); 
$form->setData($user); // created user object 
$event = new FormEvent($form, $request); // request of the Controller 
$dispatcher = $this->get('event_dispatcher'); 
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_SUCCESS, $event); 

Pas vraiment une solution propre, mais le seul que je pouvais venir avec, comme FOSUserBundle ne semble pas offrir tout type d'API pour elle.

+0

J'essaie de faire quelque chose de similaire avec FosUser 1.2.0. Une idée comment? – xocasdashdash

4

Cela a fonctionné pour moi

$mailer = $this->container->get('fos_user.mailer'); 
// Create token 
$token = sha1(uniqid(mt_rand(), true)); // Or whatever you prefer to generate a token 
$user->setConfirmationToken($token); 
$mailer->sendConfirmationEmailMessage($user); 
+0

veuillez corriger l'étiquette de fermeture manquante sur la ligne 2. –

Questions connexes