2016-06-17 36 views
2

我構建了一個多站點應用程序,具有以下要求:用戶應該能夠在集合的不同站點上創建帳戶,使用相同的電子郵件和用戶名FOS用戶覆蓋用戶存儲器上的唯一約束條件

這裏是我做過什麼:

  1. 與FOSUserBundle創建UserBundle父
  2. 添加AttributeOverride來的用戶名,usernameCanonical,電子郵件和emailCanonical領域。
  3. 通過覆蓋驗證組禁用初始驗證組(註冊和配置文件)。

點2:

/** 
* User 
* The user class to work with, based on FOSUser one. 
* To improve loose coupling, don't forget to link FOS\UserBundle\Model\UserInterface instead. 
* 
* @ORM\Table() 
* @ORM\Entity(repositoryClass="LCH\UserBundle\Entity\UserRepository") 
* 
* @ORM\AttributeOverrides({ 
*  @ORM\AttributeOverride(
*   name="email", 
*   [email protected]\Column(
*    type="string", 
*    name="email", 
*    length=255, 
*    nullable=false, 
*    unique=false 
*   ) 
*  ), 
*  @ORM\AttributeOverride(
*   name="emailCanonical", 
*   [email protected]\Column(
*    type="string", 
*    name="email_canonical", 
*    length=255, 
*    nullable=false, 
*    unique=false 
*   ) 
*  ), 
*  @ORM\AttributeOverride(
*   name="username", 
*   [email protected]\Column(
*    type="string", 
*    name="username", 
*    length=255, 
*    nullable=false, 
*    unique=false 
*   ) 
*  ), 
*  @ORM\AttributeOverride(
*   name="usernameCanonical", 
*   [email protected]\Column(
*    type="string", 
*    name="username_canonical", 
*    length=255, 
*    nullable=false, 
*    unique=false 
*   ) 
*  ) 
* }) 
*/ 

3點

fos_user: 
    profile: 
     form: 
      validation_groups: [Default] 
    registration: 
     form: 
      validation_groups: [Default] 

最後2分取得得益於this question

但是在表單驗證中,我仍然有錯誤觸發,告訴我電子郵件地址已被使用。

我最後一次嘗試通過在我的子包中重新定義它來覆蓋vendor/friendsofsymfony/user-bundle/Resources/config/storage-validation/orm.xml(其中存在唯一約束)。它也沒有工作,這只是一個「絕望」的嘗試,因爲如果它變成了工作,我不會理解爲什麼使用前面的點。

回答

1

我終於找到了問題,這在椅子和屏幕之間幾乎像往常一樣。

config.yml前

registration: 
     form: 
      type: LCH\UserBundle\Form\RegistrationType 

    profile: 
     form: 
      validation_groups: [Default] # Here you can also add your own groups if you have extra validation 
    registration: 
     form: 
      validation_groups: [Default] # Here you can also add your own groups if you have extra validation 

的registration.form鍵被定義兩次......將它們合併後...

profile: 
     form: 
      validation_groups: [Default] 
    registration: 
     form: 
      validation_groups: [Default] 
      type: LCH\UserBundle\Form\RegistrationType 

...一切的岩石。

+0

完美!我有同樣的情況,這個解決方案對我來說也是一種魅力! – Ren