在Symfony2中,如何使用twig模板在表单顶部和表单顶部显示表单错误?
目前我只是通过在每个字段上将error_bubbling
设置为true或false来设法获得其中一个...
由于
答案 0 :(得分:2)
我可以提出的解决方案是对对象进行第二次显式验证,并向模板发送错误。这样,第一个隐式验证在表单对象中完成,错误绑定到字段(不使用错误冒泡)。第二个验证将为您提供错误的迭代器,您可以将该迭代器传递给模板,以显示在表单的顶部。然后,您将把错误放在每个字段旁边,也放在表单的顶部。
我建议您根据StackOverflow上的this问题。检查this特定答案。
这里是控制器代码的草图(我没有测试任何东西):
// Code in a controller
public acmeFormAction(...) {
// Form and object code
// Get a ConstraintViolationList
$errors = $this->get('validator')->validate( $user );
return $this->render('AcmeTaskBundle:Default:new.html.twig', array(
'form' => $form->createView(),
'errors' => errors,
));
}
模板中的代码:
{# Code in a twig template #}
<ul id="error-list">
{% for error in errors %}
<li> error.message </li>
{% endfor %}
</ul>
{# Display your form as usual #}
如果记住正确,有一种方法可以从表单中检索所有错误,并且仍然在每个字段上设置错误。从我的记忆中,它是表单视图中的一个特殊属性,如form.errors
。但我不记得或发现任何有关此事的信息。所以,就目前而言,这是我能找到的最佳方法。
答案 1 :(得分:0)
您应该使用的形式错误已在视图变量中提供,如下所述:
https://stackoverflow.com/a/13047952/1041895
请查看评论:
在新版本上使用vars.errors或只是转储表单字段以查看属性。 因为这部分取决于Symfony版本。