Пользовательский контроллер регистра в 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");
}