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

Maj*_*ons 8 php symfony assetic

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

{% stylesheets 'bundles/majorproductionssewingdivasite/css/*.css' filter='cssrewrite' %}
    <link rel="stylesheet" type="text/css" href="{{ asset_url }}" />
{% endstylesheets %}
Run Code Online (Sandbox Code Playgroud)

在开发中,这允许我使用图像精灵而没有任何问题.我的精灵的结果URL是:

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

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

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

注意缺少web目录.

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

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

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

Maj*_*ons 20

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

$ app/console assetic:dump --env=prod
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的答案.但是你可能需要先清除缓存`php app/console cache:clear --env = prod`.在清理缓存之前转储资产文件并不能解决我的问题.我对Symfony2有点新鲜,但从我刚刚经历的情况来看,似乎是从缓存中转储资产文件,而不是从物理文件中转储资产文件. (7认同)

小智 9

记得清除缓存

php app/console cache:clear --env=prod --no-debug
Run Code Online (Sandbox Code Playgroud)

berore

php app/console assetic:dump --env=prod --no-debug
Run Code Online (Sandbox Code Playgroud)