2017-09-05 30 views
0

在我们的Symfony2应用程序中,我们有一个名为sfGuardUser的类,从FOS\UserBundle\Model\User(FOSUserBundle包的一部分)延伸。所以它继承了该User类中的$ username字段,当我尝试插入重复的用户名时会引发错误。我想要做的是检查用户在抛出该错误之前是否确认了他/她的电话号码和电子邮件地址。是否可以在Symfony2中为“username”重复条目

例如,当有人使用用户名“Anna”注册但未确认她的电子邮件和电话号码。其他人应该能够使用用户名“Anna”进行注册。我应该如何实现这种行为?

我试图做attribute override没有任何成功。下面的代码:

use FOS\UserBundle\Model\User as BaseUser; 

/** 
* @ORM\Entity(repositoryClass="sfGuard\Bundle\sfGuardBundle\Entity\sfGuardUserRepository") 
* @ORM\Table(name="sf_guard_user") 
* @ORM\AttributeOverrides({ 
*  @ORM\AttributeOverride(name="email", 
*   [email protected]\Column(
*    name  = "email_address", 
*    type  = "string", 
*    length = 250, 
*    unique = true 
*   ) 
*  ), 
*  @ORM\AttributeOverride(name="username", 
*   [email protected]\Column(
*    name  = "username", 
*    type  = "string", 
*    length = 250, 
*    unique = false 
*   ) 
*  ), 
*  @ORM\AttributeOverride(name="enabled", 
*   [email protected]\Column(
*    name  = "is_active", 
*    type  = "boolean", 
*    nullable = true, 
*    options = { 
*     "default" : 1 
*    } 
*   ) 
*  ) 
* }) 
* @ORM\HasLifecycleCallbacks 
*/ 
class sfGuardUser extends BaseUser 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @ORM\Column(name="first_name", type="string", length=255, nullable=true) 
    * @Assert\NotBlank() 
    * @Assert\Length(
    *  min = 2, 
    *  minMessage = "Too short." 
    *) 
    */ 
    protected $firstName; 
} 

回答

0

这里的answere

<?php 
namespace LoginBundle\Entity; 
use Doctrine\ORM\Mapping as ORM; 
use FOS\UserBundle\Model\User as BaseUser; 
/** 
* Contacts 
* 
* @ORM\Table(name="Contacts") 
* @ORM\Entity(repositoryClass="LoginBundle\Repository\ContactsRepository") 
* @ORM\AttributeOverrides({ 
*  @ORM\AttributeOverride(name="username", 
*   [email protected]\Column(
*    nullable = true 
*   ) 
*  ), 
*  @ORM\AttributeOverride(name="usernameCanonical", 
*   [email protected]\Column(
*    name = "username_canonical", 
*    nullable = true 
*   ) 
*  ), 
*  @ORM\AttributeOverride(name="email", 
*   [email protected]\Column(
*    nullable = true 
*   ) 
*  ), 
*  @ORM\AttributeOverride(name="emailCanonical", 
*   [email protected]\Column(
*    name = "email_canonical", 
*    nullable = true 
*   ) 
*  ) 
* }) 
*/ 
class Contacts extends BaseUser 
{ 
    /** 
    * @var int 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 
    /** 
    * @var int 
    * 
    * @ORM\Column(name="Type", type="integer",nullable=true) 
    */ 
    protected $type; 
    /** 
    * Get id 
    * 
    * @return integer 
    */ 
    public function getId() 
    { 
    return $this->id; 
    } 
    /** 
    * Set type 
    * 
    * @param integer $type 
    * @return Contacts 
    */ 
    public function setType($type) 
    { 
    $this->type = $type; 
    return $this; 
    } 
/** 
    * Get type 
    * 
    * @return integer 
    */ 
public function getType() 
    { 
    return $this->type; 
    } 
} 

ASLO参考这篇文章attribute overrides for username fosuserbundle

+0

没有工作,和我一样。 – Zolbayar

+0

它为我工作可以分享你githup回购 – Robert