在文档中,Symfony中有一种方法可以根据窗口小部件的名称/ ID 自定义Individual字段.
{% form_theme form _self %}
{% block _product_name_widget %}
<div class="text_widget">
{{ block('field_widget') }}
</div>
{% endblock %}
{{ form_widget(form.name) }}
Run Code Online (Sandbox Code Playgroud)
这里,_product_name_widget片段定义了用于id为product_name(且name为product [name])的字段的模板.
这适用于普通的窗口小部件,但如果窗口小部件位于集合中则不适用.因为额外的列.像这样:
name="productbundle_product_type[foobar][1][value]" id="productbundle_product_type_foobar_1_value"
Run Code Online (Sandbox Code Playgroud)
在集合中使Twig定制工作的方法是什么?
我认为这样的事情,但这不起作用:
{% for db in edit_form.list %}
{% block _productbundle_product_type_foobar_{{ db.name }}_widget %}
<div class="text_widget">
{{ block('field_widget') }}
</div>
{% endblock %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
即使以下情况也不起作用:
{% _productbundle_product_type_foobar_1_value_widget %}
Run Code Online (Sandbox Code Playgroud)
它的工作方式是什么?
几天前的晚上,我正在开发一个项目,恰好遇到了这个问题 - 我找到的解决方案是一对看起来像这样的块(删除了项目特定的代码):
{# Collection markup #}
{% block my_collection_widget %}
{# Customise collection row prototype for allow_add #}
{% if prototype is defined %}
{% set data_prototype = block('my_collection_item_widget') %}
<div id="my_prototype" data-prototype="{{ data_prototype }}" style="display: none"></div>
{% endif %}
{% for prototype in form %}
{{ block('my_collection_item_widget') }}
{% endfor %}
{% endblock my_collection_widget %}
{# Collection row markup #}
{% block my_collection_item_widget %}
{# Collection contains simple, single type #}
{{ form_errors(prototype) }}
{{ form_label(prototype) }}
{{ form_widget(prototype) }}
{# OR #}
{# Collection contains a compound type, render child types independantly #}
{{ form_errors(prototype.inner_widget) }}
{{ form_label(prototype.inner_widget) }}
{{ form_widget(prototype.inner_widget) }}
{% endblock my_collection_item_widget %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2860 次 |
| 最近记录: |