本文概述
多亏了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="Submit">
{{ form_end(form) }}
在这种情况下, 当提交表单并且根据FormType中的约束, 该表单无效时, 你将看到该表单的每个输入的错误消息。
控制器(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, 或者想要将所有信息包装在控制器中然后在视图中呈现, 则可以选择此选项。
玩得开心 !
评论前必须登录!
注册