我试图在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”。
我正在使用dev前端控制器并测试过Assetic认为它处于调试模式。 (不应用仅限生产的过滤器。)但是文件仍在连接,尽管文档建议不这样做。
由于行号不匹配,因此很难跟踪这些文件中的问题,尤其是对于JavaScript错误。为了让Twig分别显示文件,我还需要做些什么吗?
答案 0 :(得分: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.yml 中指定的output
参数,但遗憾的是它不起作用。它可以在转储资产时输出正确的文件,但不能在树枝中自动插入资产。 您必须像上一个示例中那样指定它。
这里的debug参数是可选的,它意味着强制特定集合的调试模式并输出不同的文件。您也可以在 config.yml 中设置此参数。
assets:
all_js:
inputs:
- @FoundationViewBundle/Resources/public/js/*
filters: [?yui_js]
output: "assetic/css/all.min.js"
debug: true
答案 1 :(得分:0)
您只需在模板中列出单独的资源,它就会生成单独的文件as documented here。在制作时,它将合并为1个文件。