Symfony2中CSS图片路径被重写导致404错误

5
我正在使用Symfony2和assetic在一个现有的项目中,我无法弄清楚如何在我的CSS中引用图像。我把我的图片放在:src/Organisation/MyBundle/Resources/public/images/ 运行assets install之后:php app/console assets:install public 我可以在浏览器中正确加载它们:http://sitename/bundles/organisationmy/images/logo.png 然而,当我尝试在CSS中指向它们时,使用:url('/bundles/organisationmy/images/logo.png') 通过firebug检查,URL会被更改为: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中解决这个问题的正确方法吗?

更新:我注意到,即使我放置url('something.png'),当我加载页面时,CSS也不再更新,所以我可能已经在命令行中弄错了一些东西,我还执行了php app/console assetic:dump之类的命令,如何回到正常的dev样式修改CSS并重新加载页面?

更新2:我发现php app/console assetic:dump --watch会自动更新资产,因为它们发生变化。

1个回答

8
为了在CSS文件中加载图片,路径必须是。 更新 请确保您已经。
write_to: %kernel.root_dir%/../web 

config.ymlassetic:下面,以及您的CSS中的background: url('/bundles/(bundle name)/images/prev.png'),然后运行。
php app/console assets:install web 

并且

php app/console assetic:dump web

我和你的设置一样,在我的CSS文件中,我有:background: url('/bundles/mscore/img/prev.png') left 48% no-repeat; ,同时在config.yml中的assetic下,我也有write_to: %kernel.root_dir%/../web。 - Dave Mascia
它应该可以工作,你看到问题底部的更新了吗?我认为问题可能是我的CSS加载不再更新了。 - stivlo
请确保在config.yml中的assetic:下有write_to: %kernel.root_dir%/../web和background: url('/bundles/mscore/img/prev.png')在您的CSS中,然后运行php app/console assets:install web,接着运行php app/console assetic:dump web。 - Dave Mascia
这很有效,太棒了!谢谢Dave,现在我可以从CSS背景中看到图片。然而,每当我添加一张图片时运行php app/console assets:install web是可以的,但如果每次修改CSS都要运行php app/console assetic:dump web(需要1分钟),那会让我变得很慢。在我的开发机器上,我修改CSS后更改立即可见,你有什么想法为什么它不再起作用了吗? - stivlo
只要不执行命令,就可以修改CSS,至于图像拖放我不知道,从未遇到过这种情况。 - Dave Mascia
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接