2014-09-22 34 views
0

没有错误,我不是在Symfony的新手,我已经做了很多的在它的形式。当我尝试嵌入式表单时,首先出现这个问题。没有可以在模板中呈现的错误,但方法$form->getErrorsAsString()表示表单中存在错误。Symfony2的表格

在嵌入式表单没有工作后,我尝试了最简单的例子。

$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,我试着删除vendor目录并且应付来自diffrenet symfony项目的相同目录,我试过甚至简单的例子,我试过......没有任何作用。

我很认真地开始思考,什么是错把我的头。

任何帮助?

编辑

我安装了一个新的symfony的版本,并从我的项目到新的symfony英索尔推杆的所有文件。仍然没有工作。

我也尝试过的最简单的方法...

{{ form(form, {'attr': {'novalidate': 'novalidate'}}) }} 

仍然没有工作。

+0

考虑发布您的模板。你使用form_errors和/或form_row? – Cerad 2014-09-22 17:04:36

+0

我尝试了两个。它们都不起作用。 5分钟前,我已经下载了symfony 2.4的全新安装。9,我会尝试模拟它的形式,现在就让 – 2014-09-22 17:08:31

回答

0

如果你只是想从所有子形式出现错误,你可以这样做:

$form->getErrors(true); 

这将通过根和所有子形式穿越,让所有的错误。见FormInterface::getErrors method

这样做的原因是你的错误,不是基本形式,他们都在孩子的形式,让孩子的错误,形成你只是把它从它的父,并得到它的错误:

$form->get('title')->getErrors(); 

如果你想从子窗体的所有错误,实际上是根表上,你需要打开错误冒泡,例如:

$form = $formFactory->createBuilder('form', new Author()) 
    ->add('title', 'text', ['error_bubbling' => true]) 
    ->add('add', 'submit') 
    ->getForm(); 

这样,你会得到所有的错误,从孩子都启用了错误冒泡在根本上,正如你试图从s那里做的那样蛋挞:

$form->getErrors(); 

有想法,使用错误冒泡母鸡,错误的将不提供实际的子窗体的地方出现,所以现在这将是空的:

$form->get('title')->getErrors();