Как перезаписать сущность в пакете Symfony2 - PullRequest
7 голосов
/ 19 сентября 2011

Я использую FOSUserBundle для Symfony2 , и мне нужно иметь возможность зарегистрировать пользователя без проверки, если адрес электронной почты уникален , мне просто нужнодействительный адрес электронной почты, поэтому многие пользователи могут иметь один и тот же адрес электронной почты (я знаю, что это странно, но мне это нужно).

У меня есть объект "Пользователь" в комплекте, который расширяет FOSUserBundle , возможно ли перезаписать определение столбца emailCanonical, чтобы исключить уникальный параметр и удалить проверку из FormType?

Я использую аннотацию для сопоставления моих сущностейи YML для проверки моих форм.

Ответы [ 2 ]

4 голосов
/ 15 октября 2011

У меня была похожая проблема несколько недель назад.Единственное решение состоит в том, чтобы расширить модель вместо сущности:

use FOS\UserBundle\Model\User as BaseUser;

class User extends BaseUser

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

0 голосов
/ 21 сентября 2011

Я что-то нашел, это частично обходной путь , нежизнеспособное решение.

Проблема разделена на две части: форму и модель.

Для формы: Чтобы перезаписать уникальное ограничение формы регистрации FOSUserBundle, вы можете изменить группы проверок регистрации в app / config / config.yml:

fos_user:
  registration:
    validation_groups: [YourValidationGroup]

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

Если у вас есть лучшее решение для моделине стесняйтесь!

...