Symfony fosuserbundle在创建用户时设置确认令牌

Symfony fosuserbundle在创建用户时设置确认令牌,symfony,fosuserbundle,Symfony,Fosuserbundle,当我使用fosuserbundle在自己的控制器上创建用户时,我的用户没有确认令牌(在数据库中)。我如何创建这个 $userManager = $this->get('fos_user.user_manager'); $userCreate = $userManager->createUser(); $userCreate->setUsername($user->getUsername()); $userCr

当我使用fosuserbundle在自己的控制器上创建用户时,我的用户没有确认令牌(在数据库中)。我如何创建这个

        $userManager = $this->get('fos_user.user_manager');
        $userCreate = $userManager->createUser();
        $userCreate->setUsername($user->getUsername());
        $userCreate->setEmail($user->getEmail());
        $userCreate->setEmailCanonical($user->getEmail());
        $userCreate->setPlainPassword($user->getPassword());
        $userCreate->setEnabled(true);
        $userManager->updateUser($userCreate, true);

这是正常的吗

确认令牌是使用事件注册成功创建的,当该事件被分派时,事件侦听器应提供令牌并发送电子邮件,以允许创建的用户确认其地址

在您的情况下,应配置fosUser的电子邮件配置。结束时,确认令牌和电子邮件将起作用

看那里:


为什么要使用控制器?您好,因为我添加了一些字段和custum操作。在这种情况下,您应该使用事件,而不是覆盖控制器:感谢您的解释:)
/**
 * @param FormEvent $event
 */
public function onRegistrationSuccess(FormEvent $event)
{
    /** @var $user \FOS\UserBundle\Model\UserInterface */
    $user = $event->getForm()->getData();
    $user->setEnabled(false);
    if (null === $user->getConfirmationToken()) {
        $user->setConfirmationToken($this->tokenGenerator->generateToken());
    }
    $this->mailer->sendConfirmationEmailMessage($user);
    $this->session->set('fos_user_send_confirmation_email/email', $user->getEmail());
    $url = $this->router->generate('fos_user_registration_check_email');
    $event->setResponse(new RedirectResponse($url));
}