Метод, рекомендуемый в документах , позволяет легко настраивать каждую коллекцию независимо внутри вашего приложения, все в одном файле.
Создать файл prototype_layout.html.twig
:
{% block _myform_mycollection_entry_row %}
<div class="row">
<div class="col-sm-6">{{ form_row(form.title) }}</div>
<div class="col-sm-6">{{ form_row(form.author) }}</div>
</div>
{% endblock %}
Название блока имеет важное значение. Первая часть будет _myform
, если ваша родительская форма называется MyformType
, а вторая часть _mycollection
, если ваше поле формы, владеющее коллекцией, называется так. Третья часть всегда должна быть _entry_row
, чтобы это работало.
Например, если у вас есть форма UserType
с коллекцией 'books'
, имя блока может быть _user_books_entry_row
Чтобы убедиться, что вы правильно поняли имя, добавьте подчиненную форму (нажав кнопку «Добавить», добавляя подчиненные формы с помощью javascript) и проверьте идентификатор соответствующего HTML-элемента select, используя инструмент инспектора вашего браузера.
Если это выглядит как user_books_0_title
, тогда имя блока будет _user_books_entry_row
Объявите этот файл как глобальную тему формы в разделе веток config.yml
:
twig:
form_themes:
- 'AppBundle:Form:prototype_layout.html.twig' #adapt this path if you saved your file elsewhere
Вы также можете использовать файл непосредственно в виде формы:
{% use "AppBundle:Form:prototype_layout.html.twig" %}