Symfony2,然后在创建用户

时间:2017-03-22 12:00:39

标签: symfony doctrine-orm symfony-forms

我有登录/注册表格。

我没有使用用户名,除非在登录时使用电子邮件。还要实现 UserInterface

1)我应该在用户名实体字段中设置电子邮件吗?

/**
* @ORM\Column(type="string", length=255, unique=true)
* @Assert\Email()
*/
private $username;

2)也许应该使用自动生成的用户名?例如_姓。

if ($form->isSubmitted() && $form->isValid()) {
    $password = $this->get('security.password_encoder')->encodePassword($user, $user->getPlainPassword());

    $user->setPassword($password);

    //Maybe setUsername should be in other place ?
    $user->setUsername($user->getName().'_'.$user->getLastName());

    $em = $this->getDoctrine()->getManager();
    $em->persist($user);
    $em->flush();
}

1 个答案:

答案 0 :(得分:2)

在User.php实体类中添加此方法。它将在用户名字段中设置电子邮件。

/**
 * Set username to email.
 *
 * @ORM\PreUpdate()
 * @ORM\PrePersist()
 */
public function setUsernameToEmail()
{
    $this->username          = $this->email;
    $this->usernameCanonical = $this->emailCanonical;
}