2015-04-08 2 views
0

У меня есть AFormType шаблон класса и соответствующий прут, который обрабатывается в some_controller_action.html.twig таким образом:Symfony 2 Форма тематизации и JS

{% form_theme a_form with ['ABundle:Form:a-form.html.twig'] %} 
{{ form(a_form) }} 

Я хочу-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 обрабатывается правильно.

Как я могу решить проблему?

ответ

1

Проблема, с которой вы сталкиваетесь, заключается в том, что расширение формы формы твинов Symfony обрабатывает загрузку и рендеринг блоков в файлах тем. Вы не можете добавлять в свои темы ничего, кроме виджета форм.

Вы можете попробовать импортировать файл темы и установить текущий файл в качестве темы. Но вы все равно придется вызывать block('javascripts')

{% form_theme a_form _self %} 
{% use 'ABundle:Form:a-form.html.twig' %} 

Единственный способ добавить JavaScript для контроллера формы, чтобы добавить его непосредственно в HTML в виджете. Gregwar CaptchaBundle делает. Проблема с этим подходом заключается в том, что скрипт будет добавляться каждый раз, когда визуализуется контроллер формы.

+0

Благодарим за ответ. Моя идея заключалась в том, чтобы автоматически присоединять соответствующие javascripts к странице, на которой размещается форма 'AFormType'. Есть ли способ «Symfony» сделать это, кроме решения, которое вы упомянули ранее? – anton

+0

@anton Обновлен ответ другим способом – Twifty

+0

Спасибо! Меня устраивает. – anton

 Смежные вопросы

  • Нет связанных вопросов^_^