Reputation: 533
I use FOS and I built own form to create user. I have problem with detection duplicate username and email.
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
@UniqueEntity(
* fields={"email"},
* message="Your E-Mail adress has already been registered"
* )
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
public function __construct()
{
parent::__construct();
// your own logic
}
}
And nothing. I see:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'test' for key 'UNIQ_957A647992FC23A8'
I prefer error message. I try: Symfony 2 - Set UniqueEntity message
Upvotes: 0
Views: 169
Reputation: 4345
Actually FOS Model User already have unique entity constraint for username and email. Please make sure your form's validation_groups is set to "Registration" or "Profile".
/**
* @param OptionsResolverInterface $resolver
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\User',
'validation_groups' => array('Registration', 'Default'),
));
}
Or you can set up your own unique constraint using "emailCanonical" field.
* @UniqueEntity(fields="emailCanonical", errorPath="email", message="Your E-Mail adress has already been registered")
Upvotes: 0