Send us a message {{ form_errors(form)"> Send us a message {{ form_errors(form)"> Send us a message {{ form_errors(form)" />

Symfony2 - フォームエラー(フォーム全体で、個々のフィールドではない)が表示されない

私の質問には何の反応もなかったので、Symfony2 Googleグループからクロス投稿されました。

私は次の形式を持っています:

<form id="contact-form" action="{{ path('_contact') }}" method="post" {{ form_enctype(form) }}>
    
Send us a message {{ form_errors(form) }} <div>

{{ form_label(form.name) }}

{{ form_widget(form.name, { 'attr' : { 'class' : 'input' } }) }} </div> <div>

{{ form_label(form.email) }}

{{ form_widget(form.email, { 'attr' : { 'class' : 'input' } }) }} </div> <div>

{{ form_label(form.subject) }}

{{ form_widget(form.subject, { 'attr' : { 'class' : 'input' } }) }} </div> <div>

{{ form_label(form.message) }}

{{ form_widget(form.message, { 'attr' : { 'class' : 'input', 'rows' : '8', 'placeholder' : 'Type your message here' } }) }} </div> <div class="hidden">

{{ form_label(form.honeypot) }}

{{ form_widget(form.honeypot) }} </div> {{ form_rest(form) }}

フィールドのエラーがフィールドのすぐ近くに現れるのが好きではありません。フォームの上にあるすべてのエラーの一覧を表示するだけで、各フィールドにエラーがない理由がわかります。私は少し修正されたform_errorsテーマを使用しています:

{# src/MajorProductions/SewingDiva/SiteBundle/Resources/views/errors.html.twig #}
{% block form_errors %}
    {% spaceless %}
        {% if errors|length > 0 %}
            <div class="errors">
                
    {% for error in errors %}
  • {{ error.messagePluralization is null ? error.messageTemplate|trans(error.messageParameters, 'validators') : error.messageTemplate|transchoice(error.messagePluralization, error.messageParameters, 'validators') }}
  • {% endfor %}
</div> {% endif %} {% endspaceless %} {% endblock form_errors %}

I just put the default setup in a <div> so I can style it a bit easier.

My problem is that a list of form errors isn't displaying at all. As in, no empty <div> in the HTML, no nothing. If I put in the code for a field-level error, like say {{ form_errors(form.email) }}, it displays.

I guess I could kludge it with something like:

<div class="errors">
    {{ form_errors(form.name) }}
    {{ form_errors(form.email) }}
    .
    .
    .
</div>

But that doesn't really address the problem.

Any ideas?

0

1 答え

多分あなたは次のテーマを試すことができます、それは私のために働く:

{% block form_errors %}
    {% spaceless %}
         {% if errors|length > 0 %}
              {% if compound %}
              
    {% for error in errors %}
  • {{ error.messageTemplate|trans(error.messageParameters, 'validators') }}
  • {% endfor %}
{% else %}
    {% for error in errors %}
  • {{ error.messageTemplate|trans(error.messageParameters, 'validators') }}
  • {% endfor %}
{% endif %} {% endif %} {% endspaceless %} {% endblock form_errors %}

コンパイル オプションの使用に注意してください。

フィールドごとにerror_bubblingをtrueに設定する必要があるかもしれません

(Nb:これは私のものではない、私はこれのために信用すべき種類の人を覚えていない)

3
追加された
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com