Symfony2 Assetic + Twig模板JavaScript继承

Jam*_*all 10 symfony twig assetic

我的问题:

我有3个模板:

  • main.html.twig (主要布局文件)
  • layout.html.twig (特定于包的布局覆盖,其中包含一些特定于bundle的JS标记)
  • create.html.twig (特定于页面的模板文件,其中还包含一些特定于页面的JS标记)

我在我的基本布局(main.html.twig)中定义了一个名为'javascript'的块,然后覆盖它(但是调用{{ parent() }}layout.html.twig.这很好用,主模板文件中的JS标记仍然包含在layout.html.twig模板中的那些上面.

然后我在create.html.twig文件中执行相同操作,覆盖块,如下所示:

{% block javascripts %}
    {{ parent() }}
    {% javascripts '@BundleName/Resources/public/js/application.album.uploader.js'
                   '@BundleName/Resources/public/js/jquery.uploadify.js'
                   '@BundleName/Resources/public/js/swfuploadify.js' filter='?yui_js' %}
         <script src='{{ asset_url }}' type='text/javascript'></script>
    {% endjavascripts %}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

此时,它不是仅覆盖parent(layout.html.twig)中的javascript块并包含其上方模板中定义的所有脚本,而是执行以下操作:

  • <script>标记转储到输出的中间(这会导致错误,因为在我的main.html.twig文件中我只在HTML标记的末尾包含了jQuery库
  • 然后它还会将脚本与其他脚本一起转储(正如我所期望的那样)

我不确定是什么导致脚本被转储到create.html.twig模板的中间,我也很困惑为什么他们被转发到屏幕两次(一次在创建的中间,然后一次在来自main.html.twig和的所有其余脚本的底部layout.html.twig.

有没有人有任何想法?如果有什么不清楚或者我是否可以提供更多信息,请告诉我.

编辑:

文件内容如下......

main.html.twig:https://gist.github.com/7f29353eaca0947528ce

layout.html.twig:https://gist.github.com/734947e9118b7765715e

create.html.twig:https://gist.github.com/c60c8d5c61e00ff86912

编辑2:

今天早上我一直在看这个问题,看起来它对样式表做了同样的事情.我尝试定义一个pagescripts在我的调用中调用的新块layout.html.twig,然后在我的块中使用块,create.html.twig但这有相同的结果,它似乎只是在我使用的地方转储脚本和样式表

{% block pagescripts %} 
   (scripts here) 
{% endblock}
Run Code Online (Sandbox Code Playgroud)

Jam*_*all 2

我发现了这个问题。我在my 内部create.html.twig定义了内容,所以我假设 Twig 正在块内渲染块的输出。{% block javascripts %}{% block content %}javascriptscontent

{% block javascripts %}内容移到块之外{% block content %}解决了该问题。