Symfony2和Assetic - cssrewrite非常适合dev,而不适用于prod

时间:2012-12-28 17:12:27

标签: php symfony assetic

我使用以下代码包含我的CSS:

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

但是,在prod中,它被映射到:

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

请注意缺少网络目录。

CSS文件中生成的代码应该是这样,并且我的所有CSS(dev'unk'和最终的prod资产转储)都在web/css/。关于为什么prod环境正在跳过web目录的任何想法?

编辑:奇怪的是dev和prod在CSS本身生成相同的URL:

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

4 个答案:

答案 0 :(得分:20)

解决方案是将资产转储到prod环境中:

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

答案 1 :(得分:9)

请记住清除缓存

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

berore

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

答案 2 :(得分:1)

还记得在config_prod.yml中设置如下所示的适当配置assetic:

assetic:
    use_controller: false

编辑: 如Symfony docs中所述(实际上在章节中指的是开发环境):告诉Symfony停止尝试动态处理这些文件

答案 3 :(得分:0)

在调试模式下,即使不在{%stylesheets%}标记中,Assetic 1.1似乎也会重写CSS。所以当你在生产中关闭调试时,有必要检查一下。