2017-03-22 19 views
0

ログイン/登録フォームがあります。Symfony2、ユーザー名を設定してユーザーを作成

私はログイン時に電子メールを使用する以外は、ユーザー名を使用していません。また、UserInterfaceを実装してください。

1)usernameエンティティフィールドにメールを設定する必要がありますか?

/** 
* @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(); 
} 
+2

メールを設定します。名前と姓の組み合わせは一意ではありません。 – malcolm

+2

また、ユーザー名プロパティをまったく持っていなくても、getUsername()で電子メールを返すことができます。 – Cerad

+0

私は$ authenticationUtils-> getLastUsername()を使用しています。それは問題になりませんか? – Nefro

答えて

2

このメソッドをUser.phpエンティティクラスに追加します。ユーザー名フィールドに電子メールが設定されます。

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