Результаты небольшого исследования показали, что лучший способ сделать это - добавить переопределения полей для виджета:
/ SRC / ПОЛ / DataBundle / Ресурсы / просмотров / Форма / fields.html.twig:
{% block periodChoose_widget %}
<script type="text/javascript" src="{{ asset('bundles/databundle/js/periodChoose.js') }}"></script>
{{ block('form_widget') }}
{% block %}
Затем добавьте следующее к каждому из файлов конфигурации приложения / пакета:
/ приложение / Config / config.yml:
imports:
data_bundle:
resource: @PWTDataBundle/Resources/config/config.yml
/ SRC / ПОЛ / DataBundle / Ресурсы / конфигурации / config.yml:
# Twig Configuration
twig:
form:
resources:
- 'PWTDataBundle:Form:fields.html.twig'
Я понял, что мне нужно будет что-то добавить в глобальную конфигурацию приложения, если я захочу повторно использовать форму в нескольких пакетах. Это позволяет пакету быть достаточно автономным, имея лишь небольшую ссылку в общей конфигурации приложения. Javascript не включается до тех пор, пока форма не будет использована, и блок веток имеет очень мало накладных расходов по сравнению с другими решениями (afaik).
Таким образом, javascript, который идет с формой, включается всякий раз, когда он используется, и для его изменения требуется только модификация пакета, а не что-либо в общей конфигурации / представлениях приложения. Это также разбивает представления так, что у них нет длинного списка, расширяет это, расширяет это (как должно было бы применяться, если у вас был стиль пакета, который добавил тег formTheme для переопределения в базовом шаблоне пакета).
Некоторые из этих двух последних абзацев - это спекуляция, и может быть гораздо лучший способ сделать это, но я вполне могу двигаться дальше. Если у кого-то есть лучшее решение, я буду рад прочитать об этом.