2016-06-17 3 views
2

Я создал многопользовательское приложение со следующими требованиями: пользователь должен иметь возможность создавать учетные записи на разных сайтах коллекции, с тем же адресом электронной почты и именем пользователя.FOS Пользователь переопределяет уникальное ограничение для пользовательского хранилища

Вот что я сделал:

  1. Создание UserBundle с FOSUserBundle родительским
  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.

Но при проверке формы у меня все еще возникла ошибка, сообщившая мне, что адрес электронной почты уже используется.

Моя последняя попытка заключалась в том, чтобы переопределить поставщика/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