FOSUser Bundle手动触发确认电子邮件

问题描述 投票:1回答:2

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

据我所知,只有在用户通过注册表格进行注册时才会触发。

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

email symfony registration fosuserbundle confirmation
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);

1
投票

似乎没有解决方案可以手动触发确认电子邮件的发送。仅与注册表格一起触发。我最终要做的是伪造一个表单,然后分发它,以触发负责发送电子邮件的事件侦听器。

//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。

© www.soinside.com 2019 - 2024. All rights reserved.