我在使用Symfony应用程序中的FOSUB来管理我的用户。我过度使用了寄存器模板和控制器来使用Ajax并定制了一些东西。如果用户继续注册而没有错误,它可以正常工作。但是如果有什么不对劲的话。$form->isValid()返回false,但$form->getErrors()数组为空。经过一些研究,我仍然不知道如何检索这些错误。有人想到办法了吗?谢谢:)这是我的控制器:
public function registerAction(Request $request)
{
if($request->isXmlHttpRequest())
{
$returnArray = array();
/** @var $formFactory \FOS\UserBundle\Form\Factory\FactoryInterface */
$formFactory = $this->container->get('fos_user.registration.form.factory');
/** @var $userManager \FOS\UserBundle\Model\UserManagerInterface */
$userManager = $this->container->get('fos_user.user_manager');
/** @var $dispatcher \Symfony\Component\EventDispatcher\EventDispatcherInterface */
$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");
}发布于 2014-02-10 16:50:27
要显示密码字段的错误,必须在密码字段上显示错误。{ form_errors(form.plainPassword.first) }.如果只执行{{ form_errors(form.plainPassword) }},则错误不会返回,因为错误不会冒泡。
https://stackoverflow.com/questions/21611561
复制相似问题