我有登录/注册表格。
我没有使用用户名,除非在登录时使用电子邮件。还要实现 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();
}
答案 0 :(得分:2)
在User.php实体类中添加此方法。它将在用户名字段中设置电子邮件。
/**
* Set username to email.
*
* @ORM\PreUpdate()
* @ORM\PrePersist()
*/
public function setUsernameToEmail()
{
$this->username = $this->email;
$this->usernameCanonical = $this->emailCanonical;
}