2014-03-30 27 views
1

例如
我在表单对象中有两个成员。根据项目覆盖表单呈现模板

form_widget(form.icon)

form_widget(form.name)

我已经改变了 'choice_widget_expanded'

{% block choice_widget_expanded %} 
{% spaceless %} 
    <table {{ block('widget_container_attributes') }}> 
    {% for child in form %} 
     <tr> 
     {{ form_widget(child) }} 
     {{ form_label(child) }} 
     </tr> 
    {% endfor %} 
    </table> 
{% endspaceless %} 
{% endblock choice_widget_expanded %} 

但是我想使它{{形式的影响。图标}}只有

是否有可能?我怎么能告诉传递给这个块的对象是form.icon或form.name?

回答

1

要覆盖标签块choice_widget_expanded您可以定义块,并具有扩展性能用它喜欢在下面

{% block choice_widget_expanded %} 
{% spaceless %} 
    <table {{ block('widget_container_attributes') }}> 
    {% for child in form %} 
     <tr> 
     {{ form_widget(child) }} 
     {{ form_label_custom(child) }} 
     </tr> 
    {% endfor %} 
    </table> 
{% endspaceless %} 
{% endblock choice_widget_expanded %} 

而对于自定义标签太form_label_custom

注意现在对于每一个选择栏(并非全部为 字段)您的新标签将在行动中

{% block form_label_custom %} 
{% spaceless %} 
    {% if label is not sameas(false) %} 
     {% if not compound %} 
      {% set label_attr = label_attr|merge({'for': id}) %} /* you can skip this part for td */ 
     {% endif %} 
     {% if required %} 
      {% set label_attr = label_attr|merge({'class': (label_attr.class|default('') ~ ' required')|trim}) %} 
     {% endif %} 
     {% if label is empty %} 
      {% set label = name|humanize %} 
     {% endif %} 
     <td {% for attrname, attrvalue in label_attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}>{{ label|trans({}, translation_domain) }}</td> 
    {% endif %} 
{% endspaceless %} 
{% endblock form_label_custom %} 

,甚至更多,你可以定义定制form_widget_custom(child)块覆盖像

{% block form_widget_custom %} 
{% spaceless %} 
    {% if compound %} 
     {{ block('form_widget_compound') }} 
    {% else %} 
     {{ block('form_widget_simple') }} 
    {% endif %} 
{% endspaceless %} 
{% endblock form_widget_custom %} 

而现在渲染场

{{ form_widget_custom(form.icon) }} 
+1

感谢,它工作得很好! – whitebear