【发布时间】:2014-02-10 22:17:00
【问题描述】:
我目前正在使用一个使用一些 JS 文件的引导模板。为了让它们加载,我将所有必需的 JS 文件放在 app/Resources/views/base.html.twig 文件中。这是代码的sn-p:
{% block body %}{% endblock %}
{% block javascripts %}
{% javascripts '@ABBundle/Resources/public/js/*' %}
<script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}
{% endblock %}
我在位于 AB/ABBundle/Resources/views/Home/show.html.twig 的子树枝文件中的代码具有以下代码:
{% extends '::base.html.twig' %}
{% block body %}
blah blah blah normal html code blah blah blah
{% endblock %}
问题是,当我查看此页面时,我收到了几个错误,例如“ReferenceError: jQuery is not defined”和“ReferenceError: $ is not defined”。即使包含 JS 文件也是如此(JS 文件的名称已按预期更改)。
我发现这个错误可以通过一个相当讨厌的 hack 来修复,而不是用一行代码加载所有 js 文件 {% javascripts '@ABBundle/Resources/public/js/*' %} 我知道需要像这样包含js文件:
{% block javascripts %}
{% javascripts '@ABBundle/Resources/public/js/jquery.js' %}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
{% javascripts '@ABBundle/Resources/public/js/jquery.prettyPhoto.js' %}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
{% endblock %}
有没有一种方法可以强制 Assetic 首先加载某些 JS 文件,同时仍然使用更短的:{% javascripts '@ABBundle/Resources/public/js/*' %} 选项?
【问题讨论】:
-
不,但是你可以扩展 Assetic 来支持这个,框架有点缺乏资产的依赖管理系统。
-
github.com/RobLoach/component-installer,这应该会有所帮助。