2016-06-17 5 views
2

次の要件を満たすマルチサイトアプリケーションを作成しました。ユーザーはコレクションの異なるサイトにアカウントを作成できるようになります。は同じメールとユーザー名です。ここでFOSユーザーストレージのユニーク制約をオーバーライドします

は私がやったことです:親

  • としてFOSUserBundleとUserBundleの作成

    1. ユーザ名、usernameCanonical、電子メール、およびemailCanonicalフィールド上AttributeOverrideを追加します。
    2. 検証グループを無効にして初期検証グループ(登録およびプロファイル)を無効にします。

    ポイント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(一意性制約がある)を、私の子バンドルで再定義することによって上書きしようとしていました。それはうまくいきませんでした。なぜなら、うまくいけば、なぜ前のポイントを使うのか分かりませんでした。

  • 答えて

    1

    私はようやく椅子とスクリーンの間でいつものように問題を発見しました。

    config.yml registration.formキーが二度定義された

    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 
    

    前に...それらをマージした後...

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

    ...すべての岩。

    +0

    完璧!私は同じ状況を抱えていて、このソリューションは私にとっても魅力のように機能します!! – Ren

    関連する問題