Можно ли добавить настраиваемые глобальные шаблоны для элементов в форме формы коллекции?
Я не хочу настраивать сам шаблон коллекции, но рендеринг каждого объекта в коллекции, например, для добавления определенного класса или разметки для каждого объекта, содержащегося в коллекции.
У меня есть форма с полем сбора, добавленным вот так:
$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 (скопированный из generic 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 %}