我的控制器在扩展BaseController时有以下代码,这似乎不起作用,但我无法看到一个不错的错误:
$responseFormatter = $this->getResponseFormatter();
$entity = new POI();
$form = $this->createForm(new POIType(), $entity);
$form->handleRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
return $responseFormatter->successfullResponseFormat($entity)->getResponse();
}
$errors = $this->formErrorFormatter($form);
return $responseFormatter->badResponseFormat('entity.error', $errors)->getResponse();
我甚至尝试过$ form-> getErrors(true)的解决方案; ,并且在我返回时它是空的,所以这篇文章(Symfony2 invalid form without errors)还没有解决我的问题。
由于
答案 0 :(得分:1)
这些也可能是无效的原因之一。
第一:无效的方法
在`HttpFoundationRequestHandler
内 $name = $form->getName();
$method = $form->getConfig()->getMethod();
if ($method !== $request->getMethod()) {
return;
}
表单已提交状态为false
这使您的表单无法提交。如果表单的状态未提交,则也无效。 errors
不仅会使您的表单成为invalid
。以下代码演示了它。
内部isValid功能
public function isValid()
{
if (!$this->submitted) {
return false;
}
if ($this->isDisabled()) {
return true;
}
if (count($this->getErrors(true)) > 0) {
return false;
}
return true;
}
答案 1 :(得分:0)
请尝试这个
$responseFormatter = $this->getResponseFormatter();
$entity = new POI();
$form = $this->createForm(new POIType(), $entity);
$form->handleRequest($request);
$form->isValid();
$form->getErrorsAsString();
exit;
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
return $responseFormatter->successfullResponseFormat($entity)->getResponse();
}
$errors = $this->formErrorFormatter($form);
return $responseFormatter->badResponseFormat('entity.error', $errors)->getResponse();
如果验证期间出现任何错误消息,我希望getErrorsAsString()函数显示错误。
答案 2 :(得分:0)