在JS文件的Symfony2资产中加载订单

Joh*_*ord 9 php symfony twig assetic

我目前正在使用一个使用一些JS文件的bootstrap模板.为了让它们加载,我将所有必需的JS文件放在app/Resources/views/base.html.twig文件中.以下是代码片段:

{% block body %}{% endblock %}
{% block javascripts %}
    {% javascripts '@ABBundle/Resources/public/js/*' %}
    <script type="text/javascript" src="{{ asset_url }}"></script>
    {% endjavascripts %}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

位于AB/ABBundle/Resources/views/Home/show.html.twig中的子twig文件中的代码具有以下代码:

{% extends '::base.html.twig' %}
{% block body %}
    blah blah blah normal html code blah blah blah
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

问题是,当我查看此页面时,我会收到一些错误,例如"ReferenceError:jQuery未定义"和"ReferenceError:$未定义".这是即使包含JS文件(JS文件的名称按预期更改).

我发现错误可以用一个相当讨厌的黑客修复,而不是用一行代码加载所有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 %}
Run Code Online (Sandbox Code Playgroud)

有没有办法我可以强制Assetic首先加载某些JS文件,同时仍然使用更短的:{%javascripts'@ABBundle/Resources/public/js/*'%}选项?

Tro*_*ike 16

您可以指定使用不同文件夹结构加载哪些文件的顺序,如下所示:

{% javascripts '@AcmeFooBundle/Resources/public/js/file1.js' 
               '@AcmeFooBundle/Resources/public/js/file2.js'
               '@AcmeFooBundle/Resources/public/js/folder/*'
%}
    <script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}
Run Code Online (Sandbox Code Playgroud)