个性化阅读
专注于IT技术分析

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

本文概述

多亏了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中的约束, 该表单无效时, 你将看到该表单的每个输入的错误消息。

无效的表单Twig symfony 3

控制器(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, 或者想要将所有信息包装在控制器中然后在视图中呈现, 则可以选择此选项。

玩得开心 !

赞(0)
未经允许不得转载:srcmini » 如何在Symfony 3中使用Twig(或在控制器中)在表单上显示所有(或单个)错误

评论 抢沙发

评论前必须登录!