如何覆盖Symfony2包中的实体

我为Symfony2使用FOSUserBundle ,并且我需要能够注册用户而不验证电子邮件是否是唯一的 ,我只需要一个有效的电子邮件,这样很多用户就可以拥有相同的电子邮件 (我知道这很奇怪,但我需要它)。

我在扩展FOSUserBundle的bundle中有一个实体“User”,是否可以覆盖 emailCanonical 的列定义以消除唯一参数并从FormType中删除验证?

我使用Annotation来映射我的实体和YML以验证我的表单。


几周前我有类似的问题。 唯一的解决方案是扩展模型而不是实体:

use FOSUserBundleModelUser as BaseUser;

class User extends BaseUser

缺点是你还必须复制从FOS用户实体到用户实体的所有内容。 另一方面,您可以根据需要调整功能。


我发现了一些东西,这部分是一种解决方法 ,而不是可行的解决方案。

问题分为两部分:表单和模型。

对于表单:要覆盖FOSUserBundle注册表的唯一约束,您可以修改app / config / config.yml中的注册验证组:

fos_user:
  registration:
    validation_groups: [YourValidationGroup]

对于模型:我没有找到一个好的解决方案,而不覆盖所有的模型。 Doctrine2明确告诉你不能覆盖Mapped Class的属性。 所以我做了一次迁移,用DoctrineMigrationBundle删除了唯一的约束索引...我对这个解决方案并不感到自豪,但它起作用,它让我保存了重复的电子邮件。

如果你有更好的解决方案,请不要犹豫!

链接地址: http://www.djcxy.com/p/54851.html

上一篇: How to overwrite an Entity in Symfony2 bundle

下一篇: Broadcast receiver onReceive() getting called multiple times