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

标签 symfony twig

在文档中,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/

相关文章:

Symfony PHPUnit 桥 : Get specific list of deprecation notices

php - Symfony2 将变量从自己的包传递到 Twig

Twig 模板中的 Symfony 'trans' 域

php - Symfony Doctrine Group By Query

symfony - 如何使用Twig将日期转换为UNIX时间戳?

symfony - 如何在 Symfony2 中通过 Swiftmailer 发送 12 000 封电子邮件?

symfony - 如何从 Twig 模板中的相关对象输出数据?

php - Twig 和 Symfony2 中的自定义反式过滤器

twig - 尽管有子页面,但 page.collection() 为空

Symfony 外部库 - Payone