Symfony 2形成主题和JS

时间:2015-04-08 15:41:21

标签: php forms symfony twig theming

我有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处理正确。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您看到的问题是因为Symfony twig表单扩展处理主题文件中块的加载和呈现。除了表单小部件之外,您不能在主题中添加任何内容。

您可以尝试导入主题文件并将当前文件设置为主题。但您可能仍需要致电block('javascripts')

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

为表单控制器添加javascript的唯一方法是将其直接添加到窗口小部件中的HTML。 Gregwar CaptchaBundle这样做。这种方法的问题是每次呈现表单控制器时都会添加脚本。