フォームの上にすべてのエラーを表示し、フィールドごとに個別のエラーを表示する必要があります。これどうやってするの?
6 に答える
より具体的にする必要がありますが、うまくいけば、次のことが役に立ちます。
という変数があるとしますform
。
{{ form_errors(form) }}
1 つのフィールドに固有ではないグローバル エラーを表示します
{{ 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) }}
...
{% 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で私のために働きます
バンドルで 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)
と、すべてのエラーがフォームに表示され、各フィールドのエラーも示されます。
フォームとフィールドにはすべて、最初に個別のエラー フィールドがあります。何をしようとしているのか、どこに問題があるのか、より具体的に教えていただけますか?
@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 %}
`