我需要显示形式以上所有的错误和为每个字段显示一个单独的错误。 我怎样才能做到这一点?
Answer 1:
你需要更具体的,但希望下面的可以帮助你。
让我们假设你有一个名为变量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) }}
...
Answer 2:
{% 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 %}
在SF 2.3为我工作
Answer 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 %}
现在,如果写form_errors(form)
它显示在形式和错误所有误差在每个字段还指示。
Answer 4:
在Symfony的3.2,获得一个模板的所有形式的错误,你可以使用一个有点哈克,但简单的工作使用的解决方案form.vars.errors.form.getErrors(true)
:
<ul>
{% for error in formView.vars.errors.form.getErrors(true) %}
<li>{{ error.message }}</li>
{% endfor %}
</ul>
诀窍是:
- 通过误差迭代原来的形式的对象(
formView.vars.errors.form
), - 在
form.getErrors(true)
为您提供了所有形式的错误递归迭代器。
Answer 5:
您的形式藏汉为您的领域均具有独立的错误域开始。 你能不能更具体的你正在尝试做的,您的问题是什么?
Answer 6:
我修改@ korvinko的剧本,这适用于Symfony的2.6.11`
{% block form_errors %}
{% spaceless %}
<ul>
{% for children in form.children %}
{% if not children.vars.valid %}
{% for error in children.vars.errors %}
<li>{{ children.vars.label ~ ' ' ~
error.messagePluralization is null
? error.messageTemplate|trans(error.messageParameters, 'validators')
: error.messageTemplate|transchoice(error.messagePluralization, error.messageParameters, 'validators')
}}</li>
{% endfor %}
{% endif %}
{% endfor %}
</ul>
{% if errors|length > 0 %}
<ul>
{% for error in errors %}
<li>{{
error.messagePluralization is null
? error.messageTemplate|trans(error.messageParameters, 'validators')
: error.messageTemplate|transchoice(error.messagePluralization, error.messageParameters, 'validators')
}}</li>
{% endfor %}
</ul>
{% endif %}
{% endspaceless %}
{% endblock form_errors %}
`
文章来源: Display all errors with form_errors(form) plus for each field in symfony2