У меня есть класс AFormType и соответствующий шаблон ветки, который обрабатывается в some_controller_action.html.twig таким образом:
{% form_theme a_form with ['ABundle:Form:a-form.html.twig'] %}
{{ form(a_form) }}
Я хочу, чтобы a-form.html.twig содержал javascript, который относится только к форме и ни к чему другому. Поэтому я добавил туда следующее:
{% block javascripts %}
<script type="text/javascript">
$(document).ready(function () {
...
}
{% endblock %}
У some_controller_action.html.twig также есть блок javascripts, который содержит document.load.
Проблема: шаблонизатор игнорирует скрипт a_form.html.twig и не включает отображаемую страницу. Контроллер html.twig JS обрабатывается правильно.
Как я могу решить проблему?
Проблема, которую вы видите, заключается в том, что расширение формы ветки Symfony обрабатывает загрузку и рендеринг блоков в файлах темы. Вы не можете добавить ничего, кроме виджетов формы в ваши темы.
Вы можете попробовать импортировать файл темы и установить текущий файл в качестве темы. Но вам все равно придется звонить block('javascripts')
{% form_theme a_form _self %}
{% use 'ABundle:Form:a-form.html.twig' %}
Единственный другой способ добавить JavaScript для контроллера формы — это добавить его непосредственно в HTML-код в виджете. Gregwar CaptchaBundle Является ли это. Проблема этого подхода заключается в том, что скрипт будет добавляться каждый раз при визуализации контроллера формы.
Других решений пока нет …