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

jfo*_*her 5 php symfony

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

目前我只能通过error_bubbling在每个字段上设置为 true 或 false来获得一个或另一个......

谢谢

Mat*_*att 2

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

我根据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,
    ));
}
Run Code Online (Sandbox Code Playgroud)

以及模板中的代码:

{# Code in a twig template #}
<ul id="error-list">
    {% for error in errors %}
        <li> error.message </li>
    {% endfor %}
</ul>

{# Display your form as usual #}
Run Code Online (Sandbox Code Playgroud)

如果没记错的话,有一种方法可以从表单中检索所有错误,并且仍然在每个字段上设置错误。根据我的记忆,它是表单视图上的一个特殊属性,例如form.errors. 但我不记得或找到任何有关此的信息。所以,就目前而言,这是我能找到的最好方法。