次の要件を満たすマルチサイトアプリケーションを作成しました。ユーザーはコレクションの異なるサイトにアカウントを作成できるようになります。は同じメールとユーザー名です。ここでFOSユーザーストレージのユニーク制約をオーバーライドします
は私がやったことです:親
- ユーザ名、usernameCanonical、電子メール、およびemailCanonicalフィールド上AttributeOverrideを追加します。
- 検証グループを無効にして初期検証グループ(登録およびプロファイル)を無効にします。
ポイント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への感謝を達成しました。
フォームの検証では、電子メールアドレスがすでに使用されていると私には引き続きエラーが発生しています。
私の最後の試みは、ベンダー/ friendsofsymfony/user-bundle/Resources/config/storage-validation/orm.xml(一意性制約がある)を、私の子バンドルで再定義することによって上書きしようとしていました。それはうまくいきませんでした。なぜなら、うまくいけば、なぜ前のポイントを使うのか分かりませんでした。
完璧!私は同じ状況を抱えていて、このソリューションは私にとっても魅力のように機能します!! – Ren