2013-02-07 35 views
0

從Symfony2 Google Group發佈的表單錯誤(對於整個表單,而不是單個字段),因爲對我的問題沒有任何迴應。Symfony2 - 不顯示

我有以下形式:

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

     {{ form_errors(form) }} 

     <div> 
      <p class="label">{{ form_label(form.name) }}</p> 
      {{ form_widget(form.name, { 'attr' : { 'class' : 'input' } }) }} 
     </div> 
     <div> 
      <p class="label">{{ form_label(form.email) }}</p> 
      {{ form_widget(form.email, { 'attr' : { 'class' : 'input' } }) }} 
     </div> 
     <div> 
      <p class="label">{{ form_label(form.subject) }}</p> 
      {{ form_widget(form.subject, { 'attr' : { 'class' : 'input' } }) }} 
     </div> 
     <div> 
      <p class="label">{{ form_label(form.message) }}</p> 
      {{ form_widget(form.message, { 'attr' : { 'class' : 'input', 'rows' : '8', 'placeholder' : 'Type your message here' } }) }} 
     </div> 
     <div class="hidden"> 
      <p class="label">{{ form_label(form.honeypot) }}</p> 
      {{ form_widget(form.honeypot) }} 
     </div> 

     {{ form_rest(form) }} 
    </fieldset> 

我不喜歡有現場錯誤直接顯示附近農田。我想只列出表單上方的所有錯誤,這就是爲什麼每個字段都沒有錯誤。我使用的是稍微修改form_errors主題:

{# src/MajorProductions/SewingDiva/SiteBundle/Resources/views/errors.html.twig #} 
{% block form_errors %} 
    {% spaceless %} 
     {% if errors|length > 0 %} 
      <div class="errors"> 
       <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> 
      </div> 
     {% endif %} 
    {% endspaceless %} 
{% endblock form_errors %} 

我只是把默認設置在<div>,所以我可以風格稍微輕鬆一點兒。

我的問題是,根本沒有顯示錶單錯誤列表。如在HTML中沒有空的<div>,沒有任何東西。如果我輸入字段級錯誤的代碼,例如say {{form_errors(form.email)}},它會顯示。

我想我可以用類似雜牌它:

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

但是,這並沒有真正解決問題。

任何想法?

回答

3

也許你可以試試下面的主題,它爲我工作:

{% block form_errors %} 
    {% spaceless %} 
     {% if errors|length > 0 %} 
       {% if compound %} 
       <ul class="form-errors"> 
        {% for error in errors %} 
        <li>{{ error.messageTemplate|trans(error.messageParameters, 'validators') }}</li> 
        {% endfor %} 
       </ul> 
       {% else %} 
       <ul class="form-field-errors"> 
        {% for error in errors %} 
        <li>{{ error.messageTemplate|trans(error.messageParameters, 'validators') }}</li> 
        {% endfor %} 
      </ul> 
      {% endif %} 
     {% endif %} 
    {% endspaceless %} 
{% endblock form_errors %} 

注意使用複合選項。

您可能需要設置error_bubbling爲true的每個字段

(注:這是不是從我的,我不記得那種人誰應該被記入此)