我使用FOSUser Bundle作为我自己的User类的基础类。通过网络服务,可以创建新用户。
据我所知,只有在用户通过注册表自我注册时才会触发。
有没有办法从控制器手动触发确认电子邮件?
答案 0 :(得分: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 :(得分: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。