2012-12-28 170 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

相关问题