2011-11-17 63 views
0

这个§ of the Symfony2 documentation显示了一个非常棒的技术来定制一个单独的领域。我使用了很多,但有一个特殊Type为此,我有一个很难做的定制:在CollectionType()定制集合本身是很容易的,你可以做这样的事情:如何自定义一个CollectionType()项目?

{% block _mynamespace_mybundle_mytype_mycollectionfield_row %} 
{% if prototype is defined %} 
    {% set attr = attr|merge({'data-prototype': form_widget(prototype) }) %} 
{% endif %} 
{% spaceless %} 
    <ul {{ block('widget_container_attributes') }}> 
     {% spaceless %} 
      {{ form_errors(form) }} 
      {% for child in form %} 
      <li> 
       {{form_widget(child)}} 
      </li> 
      {% endfor %} 
     {% endspaceless %} 
     {{ form_rest(form) }} 
    </ul> 
{% endspaceless %} 
{% endblock %} 

但是,您如何定制集合的每个元素?你怎么能使用Twig来自定义data-prototypedata-prototype是一个特殊的属性,用于添加js的新项目)?

我试图做这样的事情(为data-prototype):

{% block _mynamespace_mybundle_mytype_mycollectionfield_$$name$$_row %} 
customization ok! 
{% endblock %} 

但我得到的错误,因为我不知道如何逃脱$

关于项目,我试过很多东西:

{% block _mynamespace_mybundle_mytype_mycollectionfield_item_subfield_row %} 
customization ok! 
{% endblock %} 

{% block _mynamespace_mybundle_mytype_mycollectionfield_element_subfield_row %} 
customization ok! 
{% endblock %} 

他们都没有工作。

+0

使用Twig自定义数据原型的含义是什么? –

+0

我更新了我的答案 – greg0ire

回答

0

我在symfony的bug跟踪器中问过这个问题,似乎没有解决方案,但是一个很好的解决方法是为每个想要自定义的子字段创建一个自定义类型。请参阅this issue

相关问题