assets.yml:
assetic:
assets:
base_js:
inputs:
- '%kernel.root_dir%/Resources/public/jquery-1.10.2.min.js'
- '%kernel.root_dir%/Resources/public/bootstrap3/js/bootstrap.min.js'
output: 'js/scripts.js'
base_css:
inputs:
- '%kernel.root_dir%/Resources/public/bootstrap3/css/bootstrap.min.css'
output: 'js/styles.css'
config.yml
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: assets.yml }
#...
assetic:
debug: %kernel.debug%
use_controller: false
bundles: [MyAdminBundle]
#java: /usr/bin/java
filters:
cssrewrite: ~
在模板中:
{% block javascripts %}
{% javascripts '@base_js' %}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
{% endblock %}
然而,作为输出,我得到 js / 80e3acc_part_1.js ,这个文件只包含jquery代码,缺少boostrap。任何想法如何解决这个问题?
答案 0 :(得分:1)
遗憾的是,如果在{% image %}
,{% stylesheets %}
或{% javascripts %}
标记中没有指定资产集合的输出文件名配置,则默认情况下,如果只有一个{{1} } -resource存在 - 这解释了文件名 js / 80e3acc_part_1.js 。
此外,@
函数不适用于asset()
- 语法。
使用以下命令修复文件名问题。
@
或只是直接在{% javascripts '@base_js' output='js/scripts.js' %}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
函数中包含输出文件名。
asset()
这种语法比较清晰,但是如果你想重命名输出文件,必须更改配置和模板中的文件名,这样会留下不足之处。
请注意,如果添加资源,在大多数情况下,资产不会自动更新缓存集合的资源。因此,在转储资产之前,请始终使用<script src="{{ asset('js/scripts.js') }}"></script>
清除缓存。
这可以解释为什么在转储后输出文件中缺少bootstrap,如果你将它添加为第二个资源但在使用app/console cache:clear
命令之前没有清除缓存。