Symfony2: How to make username of FOSUserBundle user unique

风格不统一 提交于 2019-12-04 13:56:59

问题


Hi I have my own User Class, wich inherits FOS\UserBundle\Entity\User. Additionally I wrote my own registration routine. Now I have the problem that the form does not make sure that the username is unique. I always get SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'myusername' for key 'UNIQ_2DA1797792FC23A8'

I tried adding the @UniqueEntity("email") annotation as stated in the documentation[1], but without any effect.

Someone knows what might be wrong?

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


回答1:


The constraint exists in the FOS bundle already. You probably need to set the validation_groups option on your form to array('Registration').




回答2:


If you're using the fos_user bundle, you can simply use the UniqueEntity constraint: http://symfony.com/doc/2.0/reference/constraints/UniqueEntity.html.

To implement it, just make sure your User class constains the proper use statements, and then the annotations, like so (assuming you're using annotations):

<?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
{ /* ... */ }



回答3:


You can try this on the validation.yml with your user entity validation:

constraints:    
    - FOS\UserBundle\Validator\Unique:
        property: usernameCanonical
        message:  'This username already exists. Please choose another one.'


来源:https://stackoverflow.com/questions/8744070/symfony2-how-to-make-username-of-fosuserbundle-user-unique

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!