Symfony2 CSS图像路径被重写,我得到404

时间:2012-07-03 14:03:14

标签: css image symfony yui-compressor

我在现有项目中使用Symfony2和assetic,我无法弄清楚如何在CSS中引用图像。我已将我的图片放入:src/Organisation/MyBundle/Resources/public/images/

运行资产安装后:php app/console assets:install public

我可以在浏览器中正确加载它们:http://sitename/bundles/organisationmy/images/logo.png

但是,当我尝试在CSS中指向它们时,使用:url('/bundles/organisationmy/images/logo.png')

使用firebug进行检查,网址在url('/web/bundles/organisationmy/images/logo.png')中发生变化,结果为404。

在我的主模板中,我有:

{% stylesheets filter='yui_css' output='css/output.css'
    '@MyBundle/Resources/public/css/bootstrap.min.css'
    '@MyBundle/Resources/public/css/bootstrap-responsive.min.css'
    '@MyBundle/Resources/public/css/my.css'
 %}

config.yml我有:

assetic:
    debug: %kernel.debug%
    use_controller: false
    java: /usr/bin/java
    filters:
        cssrewrite: ~
        yui_css:
            jar: %kernel.root_dir%/java/yuicompressor-2.4.7.jar
        yui_js:
            jar: %kernel.root_dir%/java/yuicompressor-2.4.7.jar

routing.yml我有:

_assetic:
    resource: .
    type: assetic

我已经看到了这个问题Symfony2 - Assetic - load images in CSS,但我不知道我是否以及如何同时使用filter='cssrewrite'filter='yui_css',或者如何解决问题。

基本上,如果我可以阻止Symfony2为我的CSS图像路径添加/web/前缀,问题就会解决。或者,是否有人知道在Symfony2中解决此问题的正确方法是什么?

UPDATE :我注意到即使我把url('something.png')放在我加载页面时CSS也不再更新,所以我可能搞砸了什么使用命令行,我还给出了php app/console assetic:dump之类的命令 - 如何回到修改CSS的正常开发风格并重新加载页面?

UPDATE2 :我发现php app/console assetic:dump --watch会在资产发生变化时自动更新资源。

1 个答案:

答案 0 :(得分:8)

要在CSS文件中加载图片,路径必须为"bundles/(bundle name)/images/(file name)"

<强>更新

确保你有

write_to: %kernel.root_dir%/../web 

assetic:

中的config.yml

你的css中的

background: url('/bundles/(bundle name)/images/prev.png')

然后运行

php app/console assets:install web 

php app/console assetic:dump web