3

我有自己的User类,它继承了FOS\UserBundle\Entity\User. 此外,我编写了自己的注册程序。现在我遇到的问题是表单不能确保用户名是唯一的。我总是得到:

SQLSTATE [23000]:完整性约束违规:1062 键 'UNIQ_2DA1797792FC23A8' 的重复条目 'myusername'

我尝试@UniqueEntity("email")按照文档1中的说明添加注释,但没有任何效果。

有人知道可能出了什么问题吗?

4

3 回答 3

13

如果您使用的是 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
{ /* ... */ }
于 2013-04-30T15:54:45.607 回答
10

FOS 捆绑包中已经存在该约束。您可能需要将validation_groups表单上的选项设置为array('Registration').

于 2012-01-05T16:52:21.000 回答
0

validation.yml您可以使用您的用户实体验证尝试此操作:

constraints:    
    - FOS\UserBundle\Validator\Unique:
        property: usernameCanonical
        message:  'This username already exists. Please choose another one.'
于 2012-07-08T15:31:47.433 回答