0

资产.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'

配置.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。任何想法如何解决这一问题?

4

1 回答 1

1

遗憾的是,如果在 , 中未指定任何内容,则默认情况下当前不使用资产集合的输出文件名配置{% image %}{% stylesheets %}或者{% javascripts %}如果仅@存在一个 -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>

这种语法更简洁,但如果要重命名输出文件,则必须更改配置中的文件名和模板。

请注意,如果添加了资源,assetic 在大多数情况下不会自动更新缓存集合的资源。app/console cache:clear因此,请务必在转储资产之前使用清除缓存。

assetic:dump如果您将引导程序添加为第二个资源但在使用命令之前未清除缓存,这将解释为什么在转储后输出文件中缺少引导程序。

于 2013-08-06T02:06:53.280 回答