Reputation: 14595
I have my own User
Class, which 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 documentation1, but without any effect.
Someone knows what might be wrong?
Upvotes: 3
Views: 9493
Reputation: 51
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.'
Upvotes: 0
Reputation: 151
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
{ /* ... */ }
Upvotes: 14
Reputation: 8965
The constraint exists in the FOS bundle already. You probably need to set the validation_groups
option on your form to array('Registration')
.
Upvotes: 10