Symfony2显示表单错误旁边的字段和表单的顶部


Symfony2 show form errors next to fields and at top of form

在Symfony2中,我将如何在每个字段旁边显示表单错误,并在表单的顶部,使用细枝模板?

目前我只设法得到一个或另一个,通过设置error_bubbling为true或false在每个字段…

谢谢

我可以建议你的一个解决方案是对你的对象进行第二次显式验证,并将错误发送给你的模板。这样,第一个隐式验证在表单对象中完成,错误被绑定到字段(不要使用错误冒泡)。第二个验证会给你一个错误的迭代器,你可以把这个迭代器传递给你的模板,让它显示在表单的顶部。然后,您将在每个字段的旁边以及表单的顶部显示错误。

根据StackOverflow上的这个问题,我建议你这样做。检查这个特定的答案。

这里是控制器代码的草图(我没有测试任何东西):

// 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。但是我不记得或找不到任何关于这个的信息。所以,现在,这是我能找到的最好的方法。

你应该做的是使用已经在视图变量中可用的表单错误,如下所述:

https://stackoverflow.com/a/13047952/1041895

请查看注释:

使用var。新版本上的错误,或者只是转储表单字段以查看属性。因为这部分取决于Symfony版本。