Я использую FOSUserBundle для Symfony2 , и мне нужно иметь возможность регистрировать пользователя, не проверяя, является ли электронное письмо уникальным , мне просто нужен действительный адрес электронной почты, поэтому многие пользователи могут иметь один и тот же адрес электронной почты (я знаю, что это странно, но мне нужно Это).
У меня есть объект «Пользователь» в пакете, который расширяет FOSUserBundle , возможно ли перезаписать определение столбца emailCanonical, чтобы устранить уникальный параметр и удалить проверку из FormType?
Я использую аннотацию для отображения моих объектов и YML для проверки моих форм.
У меня была аналогичная проблема несколько недель назад. Единственным решением является расширение модели вместо объекта:
use FOS\UserBundle\Model\User as BaseUser; class User extends BaseUser
Недостатком является то, что вы также должны копировать все из объекта пользователя FOS в свой пользовательский объект. С другой стороны, вы можете настроить функциональность в соответствии с вашими потребностями.
Я нашел что-то, это частично работа , не жизнеспособное решение.
Проблема состоит из двух частей: формы и модели.
Для формы: Чтобы перезаписать уникальное ограничение формы регистрации FOSUserBundle, вы можете изменить группы проверки регистрации в app / config / config.yml:
fos_user: registration: validation_groups: [YourValidationGroup]
Для модели: я не нашел хорошего решения без перезаписи всей модели. Doctrine2 явно сообщает, что вы не можете перезаписать свойство сопоставленного класса. Поэтому я сделал миграцию, которая удаляет уникальный индекс ограничений с помощью DoctrineMigrationBundle … Я не горжусь этим решением, но он работает, и это позволяет мне сохранять дубликат электронной почты.
Если у вас есть лучшее решение для модели, не стесняйтесь!