Formulário de registro de expansão SymFony2 FOSUserBundle faz com que o e-mail duplicado seja validado

Eu tenho um tipo de formulário de registro personalizado definido como este:

.... public function buildForm(FormBuilderInterface $builder, array $options) { parent::buildForm($builder, $options); $builder ->remove('username') ->add('firstName') ->add('lastName') ->add('hei', 'entity', array( 'class' => 'AcmeAcmeBundle:HigherEducationalInstitution', 'label' => 'Higher Educational Institution' )); } .... 

O controlador personalizado funciona basicamente o mesmo do FOSUserbundle e também verifica se há um formulário válido

 ... public function registerAsStudentAction(Request $request) { /** @var $formFactory \FOS\UserBundle\Form\Factory\FactoryInterface */ $formFactory = $this->get('acme.user_form_factory'); /** @var $userManager \FOS\UserBundle\Model\UserManagerInterface */ $userManager = $this->get('fos_user.user_manager'); /** @var $dispatcher \Symfony\Component\EventDispatcher\EventDispatcherInterface */ $dispatcher = $this->get('event_dispatcher'); $user = $userManager->createUser(); $user->setEnabled(true); $dispatcher->dispatch(FOSUserEvents::REGISTRATION_INITIALIZE, new UserEvent($user, $request)); $form = $formFactory->getStudentRegistrationForm(); $form->setData($user); if ('POST' === $request->getMethod()) { $form->bind($request); if ($form->isValid()) { $event = new FormEvent($form, $request); $dispatcher->dispatch(FOSUserEvents::REGISTRATION_SUCCESS, $event); $user->addRole('ROLE_STUDENT'); $userManager->updateUser($user); if (null === $response = $event->getResponse()) { $url = $this->get('router')->generate('fos_user_registration_confirmed'); $response = new RedirectResponse($url); } $dispatcher->dispatch(FOSUserEvents::REGISTRATION_COMPLETED, new FilterUserResponseEvent($user, $request, $response)); return $response; } } return $this->render('AcmeUserBundle:Registration:register_student.html.twig', array('form' => $form->createView())); } .... 

Quando tento me registrar com um endereço de e-mail que já está em uso, recebo uma exceção de doctrine para uma input duplicada para uma chave exclusiva no e-mail.

No formulário de registro normal, estou recebendo um erro de formulário que mostra que o endereço de e-mail já havia sido usado. Como o formulário pode passar o validador com um endereço de e-mail duplicado no meu formulário, mas não no formulário de inscrição original?

Corrigido adicionando valid.yml adicional ao AcmeBundle / Resources / config

 Acme\UserBundle\Entity\User: constraints: - Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: { fields: email, message: "This email has already been registered"} - Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: emailCanonical properties: email: - Email: ~ emailCanonical: - Email: ~ plainPassword: - Length: min: 7 minMessage: "Your password must be at least {{ limit }} characters"