Symfony2,设置用户名然后创建用户

Symfony2, Set username then on create user

我有登录/注册表格。

我没有使用用户名,除了这个在登录时使用电子邮件。还有工具UserInterface.

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

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

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

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();
}

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

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