viko
viko

Reputation: 533

FOS UniqueEntity in form

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

Answers (1)

Mikhail Prosalov
Mikhail Prosalov

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

Related Questions