5

我正在尝试在 Symfony 2 项目中使用 Assetic。我的 config.yml 中有以下设置:

# app/config/config.yml
assetic:
    debug:          %kernel.debug%
    use_controller: true
    filters:
        cssrewrite: ~
        yui_css:
            jar: /home/testing/bin/yuicompressor-2.4.7.jar
        less:
            node: /usr/bin/node
            node_paths: [/usr/local/bin/]
            apply_to: "\.less$"
    assets:
        all_js:
            inputs:
                - @FoundationViewBundle/Resources/public/js/*
            filters: [?yui_js]
        all_css:
            inputs:
                - @FoundationViewBundle/Resources/public/css/*
            filters: [less, ?yui_css]

(如果您想知道,这些设置不会在 config_dev.yml 文件中被覆盖。)

这些集合由 Assetic 拾取并为它们创建路由。每个文件都有单独的路径,带有数字和不带文件扩展名的文件名。例如,对于“base.css”文件,下载文件(应用过滤器)的路径是“/assetic/all_css_part_1_base_1”。

然后,我将资产集合包含在我的 Twig 模板中,如下所示:

{% stylesheets '@all_css' %}
    <link rel="stylesheet" type="text/css" media="screen" href="{{ asset_url }}">
{% endstylesheets %}

(对于“all_js”集合也是如此,但我将使用 css 端来演示我的问题。)

当 Twig 呈现我的模板时,它不使用为单个文件创建的路由,而是将“all_css”集合的“asset_url”显示为“/css/9118a5a_part_1.css”。

我正在使用开发前端控制器并测试了 Assetic 认为它处于调试模式。(不应用仅生产过滤器。)尽管文档另有说明,但文件仍在连接中。

由于行号不匹配,因此很难追踪这些文件中的问题,尤其是对于 JavaScript 错误。为了让 Twig 单独显示文件,我还需要做些什么吗?

4

2 回答 2

1

您必须ouput在树枝块中指定参数,如下所示。

{% javascripts '@all_js' output="assetic/js/all.min.js" debug=false %}
   <script type="text/javascript" charset="utf-8" src="{{ asset_url }}">
{% endjavascripts %}

{% stylesheets '@all_css' output="assetic/css/all.min.css" debug=false  %}
   <link rel="stylesheet" type="text/css" media="screen" href="{{ asset_url }}">
{% endstylesheets %}

最好的办法是依赖config.ymloutput中指定的参数,但不幸的是它不起作用。它可以在转储资产时输出正确的文件,但不能在树枝中自动插入资产。您必须像前面的示例一样指定它。

此处的调试参数是可选的,它旨在为特定集合强制调试模式并输出不同的文件。您也可以在config.yml中设置此参数。

assets:
    all_js:
        inputs:
            - @FoundationViewBundle/Resources/public/js/*
        filters: [?yui_js]
        output: "assetic/css/all.min.js"
        debug: true
于 2013-09-03T22:10:37.443 回答
0

您可以在模板中列出单独的资产,它会生成单独的文件,如此处所述。在生产中,它将被合并为 1 个文件。

于 2012-06-29T14:00:20.803 回答