Пользовательский контроллер регистра в FOSUserBundle не возвращает ошибок


Я использую FOSUB в своем приложении Symfony для управления моими пользователями. Я переопределил шаблон регистра и контроллер, чтобы использовать Ajax и настроить некоторые вещи. Он прекрасно работает, если пользователь переходит к регистрации без ошибок. Но если что-то не так (исх. различные Passwords) $form->isValid() возвращает false, но массив $form->getErrors() пуст. После некоторых исследований я все еще не знаю, как восстановить эти ошибки. У кого-нибудь есть идея ? Спасибо :) Вот мой контроллер:

public function registerAction(Request $request)
{
    if($request->isXmlHttpRequest())
    {
        $returnArray = array();
        /** @var $formFactory FOSUserBundleFormFactoryFactoryInterface */
        $formFactory = $this->container->get('fos_user.registration.form.factory');
        /** @var $userManager FOSUserBundleModelUserManagerInterface */
        $userManager = $this->container->get('fos_user.user_manager');
        /** @var $dispatcher SymfonyComponentEventDispatcherEventDispatcherInterface */
        $dispatcher = $this->container->get('event_dispatcher');

        $user = $userManager->createUser();
        $user->setEnabled(true);

        $event = new GetResponseUserEvent($user, $request);
        $dispatcher->dispatch(FOSUserEvents::REGISTRATION_INITIALIZE, $event);

        if (null !== $event->getResponse()) {
            return $event->getResponse();
        }

        $form = $formFactory->createForm();
        $form->setData($user);

        if ('POST' === $request->getMethod()) {
            $form->bind($request);

            if ($form->isValid()) {
                $event = new FormEvent($form, $request);
                $dispatcher->dispatch(FOSUserEvents::REGISTRATION_SUCCESS, $event);
                $userManager->updateUser($user);

                if (null === $response = $event->getResponse()) {
                    $returnArray[] = array("success" => "Registration confirmed.");
                    $returnArray[] = array("info" => "An email has been send.");
                }

                    $dispatcher->dispatch(FOSUserEvents::REGISTRATION_COMPLETED, new FilterUserResponseEvent($user, $request, $response));

                return new Response(json_encode($returnArray));
            }
            else
            {
                foreach($form->getErrors() as $error)
                    $returnArray[] = array("error" => $error->getMessage());

                return new Response(json_encode($returnArray));
            }
        }
    }
    return new Response("This is not XHR");
}
1 2

1 ответ:

Чтобы отобразить ошибку полей пароля, необходимо отобразить ошибки в поле пароля. {{ form_errors (form.простой пароль.первый) }}. Если вы просто делаете {{form_errors(form.plainPassword)}} ошибки не возвращаются, потому что ошибки не пузырятся.