2016-06-17 8 views
2

Ich baute eine Multisite-App mit folgenden Anforderungen: Benutzer sollte in der Lage sein, Konten auf verschiedenen Websites der Sammlung, mit derselben E-Mail-Adresse und Benutzernamen zu erstellen.FOS User Override eindeutige Beschränkung auf Benutzerspeicher

Hier ist, was ich getan habe:

  1. Erstellen UserBundle mit FOSUserBundle als Mutter
  2. AttributeOverride hinzufügen auf Benutzernamen, usernameCanonical, E-Mail und emailCanonical Felder aus.
  3. Deaktivieren Sie die anfänglichen Validierungsgruppen (Registrierung und Profil) durch Überschreiben von Validierungsgruppen.

Punkt 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 
*   ) 
*  ) 
* }) 
*/ 

Punkt 3

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

letzten 2 Punkte dank this question erreicht.

Aber auf Formular Validierung, habe ich immer noch Fehler ausgelöst, mir zu sagen, dass E-Mail-Adresse bereits verwendet wird.

Mein letzter Versuch wurde versucht, Verkäufer/friendsofsymfony/user-Bundle/Ressourcen/config/storage-Validierung/orm.xml außer Kraft zu setzen, (wo eindeutige Einschränkung liegt), indem sie es in meinem Kind Bündel neu zu definieren. Es hat auch nicht funktioniert, und das war nur ein "verzweifelter" Versuch, denn wenn es funktionierte, hätte ich nicht verstanden, warum ich vorhergehende Punkte verwende.

Antwort

1

Endlich fand ich das Problem, das fast wie üblich zwischen Stuhl und Bildschirm war.

config.yml VOR

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 

Der registration.form Schlüssel wurde zweimal definiert ... Nachdem sie verschmelzen ...

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

... Alles Felsen.

+0

Perfekt! Ich hatte die gleiche Situation und diese Lösung funktioniert wie ein Charme für mich auch! – Ren