gpt4 book ai didi

Symfony Twig 为集合自定义一个 Individual 字段

转载 作者:行者123 更新时间:2023-12-04 08:44:50 25 4
gpt4 key购买 nike

在文档中,Symfony 有一种方法可以访问 customize a Individual field ,基于小部件的名称/ID。

{% form_theme form _self %}

{% block _product_name_widget %}
<div class="text_widget">
{{ block('field_widget') }}
</div>
{% endblock %}

{{ form_widget(form.name) }}

这里,_product_name_widget 片段定义了用于id 为product_name(名称为product[name])的字段的模板。

这适用于普通小部件,但不适用于小部件在集合内。因为额外的列。像这样:
name="productbundle_product_type[foobar][1][value]" id="productbundle_product_type_foobar_1_value"

有什么方法可以让 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 %}

即使以下也不起作用:
{% _productbundle_product_type_foobar_1_value_widget %}

有什么办法让它工作?

最佳答案

几天前我在一个项目上工作,正好遇到了这个问题——我找到的解决方案是一对看起来像这样的块(去掉了项目特定的代码):

{# 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 %}

关于Symfony Twig 为集合自定义一个 Individual 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17171172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com