Пользователь FOS переопределяет уникальное ограничение на пользовательское хранилище


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

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

  1. Создание UserBundle с FOSUserBundle в качестве родителя
  2. Добавьте переопределение атрибутов в поля имя пользователя, имя пользователя, электронная почта и электронная почта.
  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",
 *          column=@ORM\Column(
 *              type="string",
 *              name="email",
 *              length=255,
 *              nullable=false,
 *              unique=false
 *          )
 *      ),
 *      @ORM\AttributeOverride(
 *          name="emailCanonical",
 *          column=@ORM\Column(
 *              type="string",
 *              name="email_canonical",
 *              length=255,
 *              nullable=false,
 *              unique=false
 *          )
 *      ),
 *      @ORM\AttributeOverride(
 *          name="username",
 *          column=@ORM\Column(
 *              type="string",
 *              name="username",
 *              length=255,
 *              nullable=false,
 *              unique=false
 *          )
 *      ),
 *      @ORM\AttributeOverride(
 *          name="usernameCanonical",
 *          column=@ORM\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 балла достигнуты благодаря этому вопросу.

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

Моей последней попыткой была попытка переопределить vendor/friendsofsymfony/user-bundle/Resources/config/storage-validation/orm.xml, (где лежит уникальное ограничение), переопределив его в моем дочернем пакете. Это тоже не сработало, и это была просто "отчаянная" попытка, потому что, если бы это сработало, я бы не понял, зачем использовать предшествующие точки.

Author: Community, 2016-06-17

1 answers

Я, наконец, нашел проблему, которая была почти как обычно между стулом и экраном.

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

Регистрация.ключ формы был определен дважды... После их объединения...

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

...Все качается.

 1
Author: nbonniot, 2016-06-22 12:12:20