Я создал многопользовательское приложение со следующими требованиями: пользователь должен иметь возможность создавать учетные записи на разных сайтах коллекции, с тем же адресом электронной почты и именем пользователя.FOS Пользователь переопределяет уникальное ограничение для пользовательского хранилища
Вот что я сделал:
- Создание UserBundle с FOSUserBundle родительским
- Добавить AttributeOverride на имя пользователя, usernameCanonical, адрес электронной почты и emailCanonical полей.
- Отключить начальные группы проверки (регистрация и профиль) путем переопределения групп проверки.
Точка 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