我知道来自Symfony的fosUserBundle可以自动发送EmailConfirmation,只需添加:
fos_user:
# ...
registration:
confirmation:
enabled: true
但是我在自己的控制器中有自己的寄存器表格。(我没有使用寄存器的FOSUSER形式(。而且我不知道当用户在我的系统中注册时如何发送电子邮件确认。
这些是我正在使用的寄存器功能:
public function index(Request $request)
{
$customer = new Customer();
$form = $this->createForm(CustomerType::class, $customer);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$pass = $form->get('password')->getData();
$email = $form->get('email')->getData();
$this->register($email, $email, $pass);
$em->persist($customer);
$em->flush($customer);
header("Refresh:0");
}
return $this->render('backend/customer/customer_register.html.twig', array('form' => $form->createView()));
}
和这个辅助函数:
private function register($email, $username, $password)
{
$userManager = $this->get('fos_user.user_manager');
$email_exist = $userManager->findUserByEmail($email);
if ($email_exist) {
return false;
}
$user = $userManager->createUser();
$user->setUsername($username);
$user->setEmail($email);
$user->setEmailCanonical($email);
$user->setEnabled(1);
$user->setPlainPassword($password);
$user->addRole('ROLE_CUSTOMER');
$userManager->updateUser($user);
return true;
}
我试过使用
$confirmationEnabled = $this->container->getParameter('fos_user.registration.confirmation.enabled');
但不起作用
拜托,我不知道如何开始。 有必要对 swift 邮件程序进行任何配置吗?
如果有人可以帮助我,我将不胜感激
谢谢,非常感谢
您可以在以下位置查看 FOSuserbundle 中使用的代码控制器/注册控制器::注册操作((调度调用函数的事件 FOSUserEvents::REGISTRATION_SUCCESSEventListener/EmailConfirmationListener::onRegistrationSuccess((它会生成一个令牌并将其设置为用户实体$user->setConfirmationToken($this->tokenGenerator->generateToken());
然后发送电子邮件$this->mailer->sendConfirmationEmailMessage($user);
注意:邮件程序是FOSUserBundleMailerMailerInterface
的实例和令牌生成器FOSUserBundleUtilTokenGeneratorInterface