2012-04-25 53 views
4

在樹枝,有沒有辦法定義一個不同的主題爲字段錯誤反對形成相關的錯誤,如CSRF錯誤或複合獨特的約束?symfony2格式錯誤vs字段錯誤主題(樹枝)

我想用一個<ul>

{{ form_errors(form) }}   

<table> 
    <tbody> 
     <tr> 
      <td>{{ form_label(form.tabla) }}</td> 
      <td> 
       {{ form_widget(form.tabla) }} 
       {{ form_errors(form.tabla) }} 
      </td> 
      <td></td> 
      <td>{{ form_label(form.descripcion) }}</td> 
      <td> 
       {{ form_widget(form.descripcion) }} 
       {{ form_errors(form.descripcion) }} 
      </td> 
      <td></td> 
     </tr> 
    </tbody> 
</table> 

這是被用於兩種情況下(不是我想要的)我的形式主題,以顯示與<span>場誤差和形狀誤差。

{% block field_errors %} 
    {% if errors|length > 0 %} 
     <span class="val-error"> 
      {% for error in errors %} 
       {{ error.messageTemplate|trans(error.messageParameters, 'validators')~'. ' }} 
      {% endfor %} 
     </span> 
    {% endif %} 
{% endblock field_errors %} 

有沒有區分兩種情況的方法?

回答

1

由於field_*在2.3中被刪除,因此已批准的解決方案將不再有效。我找到了一個哈克解決方案是

{% block form_errors %} 
    {% if errors|length > 0 %} 
     {% if form.parent is empty %} 
      <ul class="val-error"> 
       {% for error in errors %} 
        <li>{{ error.messageTemplate|trans(error.messageParameters, 'validators')~'. ' }}</li> 
       {% endfor %} 
      </ul> 
     {% else %} 
      <span class="val-error"> 
       {% for error in errors %} 
        {{ error.messageTemplate|trans(error.messageParameters, 'validators')~'. ' }} 
       {% endfor %} 
      </span> 
     {% endif %} 
    {% endif %} 
{% endblock form_errors %} 

所以基本上這是如果沒有父母,它知道它是最高級別。

4

Form類擴展Field。如果您將新的主題設置爲字段,它將應用於表單。 您應該重寫field_errors塊,然後使用另一個模板(使用th標籤)定義form_errors塊。

{% block field_errors %} 
    {% if errors|length > 0 %} 
     <span class="val-error"> 
      {% for error in errors %} 
       {{ error.messageTemplate|trans(error.messageParameters, 'validators')~'. ' }} 
      {% endfor %} 
     </span> 
    {% endif %} 
{% endblock field_errors %} 

{% block form_errors %} 
    {% if errors|length > 0 %} 
     <ul class="val-error"> 
      {% for error in errors %} 
       <li>{{ error.messageTemplate|trans(error.messageParameters, 'validators')~'. ' }}</li> 
      {% endfor %} 
     </ul> 
    {% endif %} 
{% endblock form_errors %} 
+0

謝謝你,這是一個很大的幫助,因爲該塊「form_errors」沒有顯示在「fom_div_layout.html.twig」,我甚至不知道它存在 – 2012-04-27 04:41:21

+2

我有一個關於這個問題。在https://github.com/symfony/symfony/blob/master/src/Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig中表示,field_ *將在Symfony 2.1中棄用,在2.3中刪除。如何做到這一點,而不使用它? – unairoldan 2012-05-21 18:49:55

+0

@ Ztere0是否發現它是否使用field_error塊保存?對我來說,它似乎不是,如果它將在2.3 – dag 2012-10-24 14:58:09