1

我使用 FOSUser Bundle 作为我自己的 User 类的基础类。通过网络服务可以创建新用户。

据我所知,它仅在用户通过注册表单注册时触发。

有没有办法手动触发来自控制器的确认电子邮件?

4

2 回答 2

4

这对我有用

$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);
于 2013-08-07T16:24:44.617 回答
2

似乎没有解决方案来手动触发确认电子邮件的发送。它仅与注册表结合触发。我最终做的是伪造一个表单并发送它以触发负责发送电子邮件的事件侦听器。

//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);

不是一个真正干净的解决方案,但我能想出的唯一一个,因为 FOSUserBundle 似乎没有为它提供任何类型的 API。

于 2013-08-05T08:40:33.867 回答