FosUserBundle - 唯一的电子邮件,用户名和更多字段

时间:2013-06-29 10:38:58

标签: symfony entity symfony-forms fosuserbundle unique-constraint

我使用FosUserBundle,我的完整性存在问题。

问题:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'Example' for key 'UNIQ_1483A5E94CE6C7A4'
-- UNIQ_1483A5E94CE6C7A4 == username field

实体:

/**
 * @ORM\Entity
 * @ORM\Table()
 * @UniqueEntity("username")
 * @UniqueEntity("username_canonical")
 * @UniqueEntity("email")
 * @UniqueEntity("email_canonical")
 * @UniqueEntity("opta")
 * @UniqueEntity("optb")
 * @UniqueEntity("optc")
 */
class User extends BaseUser
{

程序应该向用户显示错误消息。

目前我收到每个app_dev.php的错误消息。

用户收到类似“服务器返回”500内部服务器错误“。”的消息。

用户不知道他做错了什么......那就是问题......

提前感谢您!

1 个答案:

答案 0 :(得分:1)

由于您的bundle使用bundle继承而FOSUserBundle使用xml配置进行验证 - 这个xml配置可能会用在您的注释上。

您应该将文件config/validation/orm.xml复制到您的用户捆绑包中,并在其中添加UniqueEntity约束。

可以找到FOSUserBundle的验证xml配置文件here


修改

由于电子邮件属性的FOSUserBundle v1.3.x UniqueEntity 验证已包含在orm.xml中。