簡體   English   中英

symfony2中的自定義集合模板

[英]Custom collection templates in symfony2

是否可以為集合表單字段中的項添加自定義全局模板?

我不想自定義集合模板本身,而是自定義集合中每個對象的呈現,例如,為集合中包含的每個對象添加特定的類或標記。

我有一個帶有收集字段的表單,如下所示:

$builder
    ->add('items', 'collection', array(
        'type' => new ItemType(),
        'allow_add' => true,
        'allow_delete' => true,
        'prototype' => true
    ));

我想定義一個樹枝模板,為集合中的每個項目添加“刪除”按鈕(以及其他內容)。

我發現有一個'collection_widget'模板來定制集合,買這個只是為了集合本身,而不是單個項目。

注1:我需要使用全局模板才能為所有形式的所有集合執行此操作,我知道我可以為每個表單模板解決此問題,但這不是重點。

注2:到目前為止,我用jquery解決了這個問題,在collection_widget中添加了一個類,並為jquery的所有孩子添加了按鈕。 這個現在工作正常,但我正在尋找一個100%的模板解決方案,而不必完成所有的jquery處理。 理想情況下,這也適用於添加新項目的行原型。

最后我找到了一個很好的解決方案。 首先,我必須創建一個collection_widget自定義模板(從通用form_widget復制)和內部,而不是調用form_rows塊,我調用collection_rows塊,這是form_rows塊的自定義。 在collection_rows塊中,您可以自定義您想要的任何內容,我只為每個孩子添加了一個自定義類。

這是兩個模板:

{% block collection_widget %}
{% spaceless %}
    <div {{ block('widget_container_attributes') }}>
        {{ block('collection_rows') }}
        {{ form_rest(form) }}
    </div>
{% endspaceless %}
{% endblock collection_widget %}

{% block collection_rows %}
{% spaceless %}
    {{ form_errors(form) }}
    {% for child in form %}
        {{ form_row(child, {'attr':{'class':'collection-item'}}) }}
    {% endfor %}
{% endspaceless %}
{% endblock collection_rows %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM