Symfony2:如何使FOSUserBundle用户的用户名唯一

sto*_*fln 3 symfony fosuserbundle

嗨,我有自己的User班级,继承FOS\UserBundle\Entity\User.另外我写了自己的注册例程.现在我遇到的问题是表单不能确保用户名是唯一的.我总是得到SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'myusername' for key 'UNIQ_2DA1797792FC23A8'

我尝试添加@UniqueEntity("email")文档[1]中所述的注释,但没有任何影响.

有人知道可能出错了什么?

[1] http://symfony.com/doc/current/reference/constraints/UniqueEntity.html

小智 12

如果您使用的是fos_user软件包,则只​​需使用UniqueEntity约束:http://symfony.com/doc/2.0/reference/constraints/UniqueEntity.html .

要实现它,只需确保您的User类保留正确的use语句,然后确保注释,就像这样(假设您正在使用注释):

<?php
// ...
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;

/**
 * @ORM\Entity
 * @ORM\Table(name="fos_user")
 * @UniqueEntity("email")
 * @UniqueEntity("username")
*/
class User extends BaseUser
{ /* ... */ }
Run Code Online (Sandbox Code Playgroud)


Kri*_*ith 10

该约束已存在于FOS包中.您可能需要validation_groups在表单上设置选项array('Registration').

  • 在github上发布了一个问题.那里有很棒的支持人员 非常感谢@stof指出我实际上没有验证用户对象而只是表单数据.更多信息:https://github.com/FriendsOfSymfony/FOSUserBundle/issues/480 (2认同)