如何发送和电子邮件确认,因为我自己的控制器与FOS USER BUNDLE?

时间:2018-01-13 17:14:23

标签: symfony email fosuserbundle

我知道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邮件程序吗?

如果有人可以帮助我,我会非常感激

谢谢,非常感谢

1 个答案:

答案 0 :(得分:0)

您可以查看FOSuserbundle中使用的代码 的控制器/这个RegistrationController :: registerAction() 调度调用该函数的事件 FOSUserEvents :: REGISTRATION_SUCCESS 事件监听/ EmailConfirmationListener :: onRegistrationSuccess() 它会生成一个令牌并将其设置为用户实体$user->setConfirmationToken($this->tokenGenerator->generateToken());,然后发送电子邮件$this->mailer->sendConfirmationEmailMessage($user);

请注意邮件程序FOS\UserBundle\Mailer\MailerInterface的实例 和令牌生成器FOS\UserBundle\Util\TokenGeneratorInterface