我的问题:
我有 3 个模板:
main.html.twig
(主布局文件)layout.html.twig
(一个特定于捆绑包的布局覆盖,其中包含一些特定于捆绑包的 JS 标记)create.html.twig
(一个特定于页面的模板文件,其中还包含一些特定于页面的 JS 标记)
我在我的基本布局 () 中定义了一个名为“javascript”的块,main.html.twig
然后覆盖它(但{{ parent() }}
在layout.html.twig
.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 %}
此时,它不只是覆盖父 ( 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:
今天早上我一直在重新审视这个问题,它看起来好像对样式表做同样的事情。我试图定义一个在 my 中调用的新块pagescripts
,layout.html.twig
然后在 my 中使用该块,create.html.twig
但这具有相同的结果,它似乎只是在我使用的任何地方转储脚本和样式表
{% block pagescripts %}
(scripts here)
{% endblock}