У меня есть тип пользовательской формы регистрации, определенный следующим образом:
.... 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' )); } ....
Пользовательский контроллер работает почти так же, как и в FOSUserbundle, а также проверяет действительную форму
... 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())); } ....
Когда я пытаюсь зарегистрироваться с адресом электронной почты, который уже используется, я получаю исключение для исключения для повторяющейся записи для уникального ключа в письме.
В обычной форме регистрации у меня появляется ошибка формы, показывающая, что адрес электронной почты уже использовался. Как форма может пройти валидатор с дублирующим адресом электронной почты в моей форме, но не в оригинальной регистрационной форме?