kor*_*nko 9 forms error-handling symfony
我需要在表单上方显示所有错误,并为每个字段显示单独的错误.我怎样才能做到这一点?
d00*_*001 11
您需要更具体,但希望以下内容可以帮助您.
让我们假设您有一个名为的变量form.
{{ form_errors(form) }} 显示不特定于一个字段的全局错误
{{ form_errors(form.email) }} 显示特定于字段的错误
{{ form_row(form.email) }} 显示字段的form_widget form_label和form_errors
http://symfony.com/doc/2.0/cookbook/form/form_customization.html
编辑:
因此,如果您希望将全局和字段错误显示在同一位置,则可以执行以下操作:
{{ form_errors(form) }}
{{ form_errors(form.field1) }}
{{ form_errors(form.field2) }}
...
Run Code Online (Sandbox Code Playgroud)
        str*_*ker 10
{% spaceless %}
    {% if not form.vars.valid %}
            <div class="alert alert-error">
                {{ form_errors(form) }}
        {% for children in form.children %}
            {% if not children.vars.valid %}
                {{ form_errors(children) }}
                {# or with field label
                <ul>
                    {% for error in children.vars.errors %}
                        <li><b>{{ children.vars.label }}</b>: {{ error.message }}</li>
                    {% endfor %}
                </ul>
                #}
            {% endif %}
        {% endfor %}
            </div>
    {% endif %}
{% endspaceless %}
Run Code Online (Sandbox Code Playgroud)
在sf 2.3中为我工作
我在我的包中覆盖了form_div_layout.html.twig:
{% block form_errors %}
    {% spaceless %}
        {% set a = false %}
        {% for child in form.children  %}
            {% if child.get("errors") %}
                {% set a = 'true' %}
            {% endif %}
        {% endfor %}
        {% if a == true %}
            <div class="alert">
                {% for children in form.children %}
                    {{  form_errors(children) }}
                {% endfor %}
            </div>
        {% endif %}
        {% if errors|length > 0 %}
            <ul>
                {% for error in errors %}
                    {{
                    error.messagePluralization is null
                    ? error.messageTemplate|trans(error.messageParameters, 'validators')
                    : error.messageTemplate|transchoice(error.messagePluralization, error.messageParameters, 'validators')
                    }}
                {% endfor %}
            </ul>
        {% endif %}
    {% endspaceless %}
{% endblock form_errors %}
Run Code Online (Sandbox Code Playgroud)
现在如果写form_errors(form)它显示形式的所有错误,并且每个字段的错误也表示.
在Symfony 3.2中,要获取模板中的所有表单错误,您可以使用一些hacky,但使用简单且有效的解决方案form.vars.errors.form.getErrors(true):
<ul>
    {% for error in formView.vars.errors.form.getErrors(true) %}
    <li>{{ error.message }}</li>
    {% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)
诀窍在于:
formView.vars.errors.form),form.getErrors(true)为您提供了所有形式的错误递归迭代器.|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           35399 次  |  
        
|   最近记录:  |