2012-12-28 169 views
8

我包括我的CSS用下面的代碼:Symfony2中和Assetic - cssrewrite完全適用於開發,而不是督促

{% stylesheets 'bundles/majorproductionssewingdivasite/css/*.css' filter='cssrewrite' %} 
    <link rel="stylesheet" type="text/css" href="{{ asset_url }}" /> 
{% endstylesheets %} 

在開發中,這允許我使用像精靈沒有任何問題。生成的URL到我的精靈是:

http://localhost/diva/web/bundles/majorproductionssewingdivasite/images/diva-sprites.jpg

但是,督促,它被映射到:

http://localhost/diva/bundles/majorproductionssewingdivasite/images/diva-sprites.jpg

通知缺乏web目錄中。

在CSS文件中生成的代碼是它應該是,所有我的CSS(dev的'塊'和最終的prod資產轉儲)在web/css/。關於prod環境爲什麼跳過web目錄的任何想法?

編輯:有什麼奇怪的是,無論是開發和生產線產生的CSS本身相同的URL:

url('../../bundles/majorproductionssewingdivasite/images/diva-sprites.jpg')

回答

20

解決方案是轉儲資產督促環境:

$ app/console assetic:dump --env=prod 
+7

這是正確的答案。但是您可能還需要首先清除緩存'php app/console cache:clear --env = prod'。清理緩存之前轉儲資產文件並不能解決問題。我對Symfony2有點新,但是從我剛纔的經驗來看,似乎是從緩存中轉儲資產文件,而不是從物理文件轉儲。 – cartbeforehorse

+0

OMG我怎麼能錯過這個@ _ @ – GusDeCooL

0

在調試模式下,Assetic 1.1似乎也會重寫CSS,即使它不在{%stylesheets%}標籤中。因此,當您關閉生產中的調試時,檢查那裏是值得的。

9

記住清除緩存

php app/console cache:clear --env=prod --no-debug 

berore

php app/console assetic:dump --env=prod --no-debug 
1

還記得適當配置assetic,在config_prod.yml設置如下:

assetic: 
    use_controller: false 

編輯: 作爲Symfony docs說(實際上是章指的是開發環境):告訴Symfony的停止試圖處理這些文件動態

+0

請包括一些額外的細節,以使您的答覆完成 – amonk

+0

你是對的,但通常的配置已經'use_controller:'%kernel.debug%'' – Arno

相關問題