2012-06-21 37 views
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”。

然后我包括我的嫩枝模板中的资源集合如下:

{% 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

您可以在模板中列出单独的资产,它将生成单独的文件as documented here。在制作时,它将被合并成1个文件。

+0

我曾希望使用此模板作为一个捆绑包的一部分,该捆绑包可以导入到多个项目并根据项目配置包含正确的资产。如果我将资产直接放在模板中,那么它不会以这种方式重用。 (如果没有其他方法,我想我可以将资产包含在块中并使用特定于项目的模板覆盖它们。) – restouffer

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参数。它可以在转储资产时输出正确的文件,但不能在树枝中自动插入资产。 你必须像前面的例子那样指定它。

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

assets: 
    all_js: 
     inputs: 
      - @FoundationViewBundle/Resources/public/js/* 
     filters: [?yui_js] 
     output: "assetic/css/all.min.js" 
     debug: true