2016-04-11 52 views
1

當經由一個迭代中產生的表單字段:如何在樹枝檢查一個形式字段具有標籤

{% for field in form %} 
{{ form_widget(field); }} 
{% endform %} 

那麼它將封裝一個div塊包圍該字段的輸入類型,和一個標籤(如果它有一個標籤)。

我想單獨爲這個標籤,和widget:

 <div class="form-group">     
     {% if field.vars.label is not null %} 
      {{ form_label(field) }} 
     {% endif %} 
     {{ form_widget(field) }} 
     </div> 

但field.vars.label總是空。順便說一句,當我沒有條件生成,那麼它顯示正確的標籤。

如何獲取條件檢查的標籤值?

預先感謝您。

+0

嫩枝使用'name'如果'label'未設置。所以你的支票應該是'{%if field.vars.label不是空的,field.vars.name不是空的'}。這也看起來像你想要實現的是[形式定製](http://symfony.com/doc/current/cookbook/form/form_customization.html)cookbook。 –

+0

你說得對。問題是,所有的領域都有名字。我仍然不知道form_widget如何決定哪些字段會有標籤,哪些不是 – Roland

回答

1

更改標籤,以虛假和form_label()小枝功能自動忽略它。

下面是來自form_div_layout.html.twig文件中的代碼片段(見第2行):

{%- block form_label -%} 
    {% if label is not same as(false) -%} 
     {% if not compound -%} 
      {% set label_attr = label_attr|merge({'for': id}) %} 
     {%- endif -%} 
     {% if required -%} 
      {% set label_attr = label_attr|merge({'class': (label_attr.class|default('') ~ ' required')|trim}) %} 
     {%- endif -%} 
     {% if label is empty -%} 
      {%- if label_format is not empty -%} 
       {% set label = label_format|replace({ 
        '%name%': name, 
        '%id%': id, 
       }) %} 
      {%- else -%} 
       {% set label = name|humanize %} 
      {%- endif -%} 
     {%- endif -%} 
     <label{% for attrname, attrvalue in label_attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}>{{ translation_domain is same as(false) ? label : label|trans({}, translation_domain) }}</label> 
    {%- endif -%} 
{%- endblock form_label -%} 
+0

它讓我陷入妥協:)我想避免更改formbuilder,直到現在。謝謝,我應該接受這個解決方案 – Roland

0

根據表單變量參考的doc

與嘗試:

代替:

{% if field.vars.label is not null %} 
+1

對象「Symfony \ Component \ Form \ FormView」的方法「標籤」不存在。這是結果:( – Roland

+0

@Roland對不起,用'field.attr.label'也嘗試 – Matteo

+0

對象「Symfony \ Component \ Form \ FormView」的方法「attr」不存在於... – Roland