我不是Symfony的新手,我在其中做了很多表格。当我尝试嵌入表单时,首先出现了这个问题。没有可以在模板中呈现的错误,但方法$form->getErrorsAsString()
表示表单中存在错误。
在嵌入式表格不起作用后,我尝试了最简单的例子。
$ustanovaEntity = new Author();
$form = $formFactory->createBuilder('form', new Author())
->add('title', 'text')
->add('add', 'submit')
->getForm();
这是最基本的形式,并没有显示任何错误。 $form->getErrors()
返回一个空数组,但$form->getErrorsAsString()
表示如果我将标题留空则会出错。
另外,我在错误块中检查了form_div_layout.html.twig
,errors
twig变量为空。没有错误。尽管如此,$form->getErrorsAsString()
仍然存在错误。
我尝试重新安装symfony,我尝试删除供应商目录并从diffrenet symfony项目处理相同的目录,我尝试了简单的例子,我试过......没有任何作用。
我认真地开始认为我的脑子出了问题。
有人帮忙吗?
修改
我安装了一个新的symfony版本,并将我项目中的所有文件推送到新的symfony insall。仍然没有工作。
我也尝试过最简单的方法......
{{ form(form, {'attr': {'novalidate': 'novalidate'}}) }}
仍然无法正常工作。
答案 0 :(得分:0)
如果您只想从所有子表单中获取错误,您可以执行以下操作:
$form->getErrors(true);
这将遍历root和所有子窗体并获取所有错误。见FormInterface::getErrors method
这样做的原因是你的错误不在基本表单上,它们在子表单上,为了得到子表单的错误你只是从它的父表单中得到它并得到它的错误:
$form->get('title')->getErrors();
如果您希望子表单中的所有错误实际上都在根表单上,则需要打开错误冒泡,例如:
$form = $formFactory->createBuilder('form', new Author())
->add('title', 'text', ['error_bubbling' => true])
->add('add', 'submit')
->getForm();
像这样,您将从根表单中启用了错误冒泡的子项中获取所有错误,正如您从一开始就尝试做的那样:
$form->getErrors();
请记住,母鸡使用错误冒泡,错误将不会出现在它出现的实际子窗体上,所以现在这将是空的:
$form->get('title')->getErrors();