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)