2
我構建了一個多站點應用程序,具有以下要求:用戶應該能夠在集合的不同站點上創建帳戶,使用相同的電子郵件和用戶名。FOS用戶覆蓋用戶存儲器上的唯一約束條件
這裏是我做過什麼:
- 與FOSUserBundle創建UserBundle父
- 添加AttributeOverride來的用戶名,usernameCanonical,電子郵件和emailCanonical領域。
- 通過覆蓋驗證組禁用初始驗證組(註冊和配置文件)。
點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(其中存在唯一約束)。它也沒有工作,這只是一個「絕望」的嘗試,因爲如果它變成了工作,我不會理解爲什麼使用前面的點。
完美!我有同樣的情況,這個解決方案對我來說也是一種魅力! – Ren