我有AFormType类和相应的twig模板,它在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处理正确。
我该如何解决这个问题?
答案 0 :(得分:1)
您看到的问题是因为Symfony twig表单扩展处理主题文件中块的加载和呈现。除了表单小部件之外,您不能在主题中添加任何内容。
您可以尝试导入主题文件并将当前文件设置为主题。但您可能仍需要致电block('javascripts')
{% form_theme a_form _self %}
{% use 'ABundle:Form:a-form.html.twig' %}
为表单控制器添加javascript的唯一方法是将其直接添加到窗口小部件中的HTML。 Gregwar CaptchaBundle这样做。这种方法的问题是每次呈现表单控制器时都会添加脚本。