如何在Symfony 3中使用Twig(或在控制器中)在表单上显示所有(或单个)错误

本文概述

  • Twig
  • 控制器(PHP)
多亏了Twig, Symfony的模板才真正易于处理和理解。但是, symfony的文档并没有清除许多你可能不知道如何立即解决的基本任务。
在这种情况下, 我们将展示如何在Symfony 3中获取和显示表单错误。
Twig 列出表格中的所有错误
要在树枝视图中列出表单的所有错误, 你需要首先检查表单是否有错误检查form.vars.valid属性。然后, 遍历每个表单子级并在其上打印所有错误。
{# If the form is not valid then : Note: in this case the form variable is : form #} {% if not form.vars.valid %} < ul> {# Loop through every form item #} {% for child in form.children %} {# Display the errors of the form item #} {%for error in child.vars.errors%} < li> {{error.message}}< /li> {%endfor%} {%endfor%} < /ul> {%endif%}

单项错误
如果仍要在表单项旁边显示错误, 则需要使用form_errors标记, 该标记将显示与该表单项相关的错误。
{{ form_start(form) }}< div> {{ form_widget(form.subject) }} {{ form_errors(form.subject) }} < /div> < div> {{ form_widget(form.name) }} {{ form_errors(form.name) }} < /div> < div> {{ form_widget(form.email) }} {{ form_errors(form.email) }} < /div> < div> {{ form_widget(form.message) }} {{ form_errors(form.message) }} < /div> < input type="submit" value="http://www.srcmini.com/Submit"> {{ form_end(form) }}

在这种情况下, 当提交表单并且根据FormType中的约束, 该表单无效时, 你将看到该表单的每个输入的错误消息。
如何在Symfony 3中使用Twig(或在控制器中)在表单上显示所有(或单个)错误

文章图片
控制器(PHP) 要使用PHP获取表单的所有错误, 可以使用getErrors方法, 该方法可以在表单或表单项中直接调用。
< ?php$form = ...; // ...// a FormErrorIterator instance, but only errors attached to this // form level (e.g. "global errors) $errors = $form-> getErrors(); // a FormErrorIterator instance, but only errors attached to the // "subject" field $errors = $form['subject']-> getErrors(); // a FormErrorIterator instance in a flattened structure // use getOrigin() to determine the form causing the error $errors = $form-> getErrors(true); // a FormErrorIterator instance representing the form tree structure $errors = $form-> getErrors(true, false);

如果你更喜欢PHP而不是Twig, 或者想要将所有信息包装在控制器中然后在视图中呈现, 则可以选择此选项。
【如何在Symfony 3中使用Twig(或在控制器中)在表单上显示所有(或单个)错误】玩得开心 !

    推荐阅读