2012-06-21 75 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