symfony2管理css后,css中定义有背景图片,symfony2改变了css的路径,却没有改变css内定义的背景图片的路径,导致背景图片无法显示,怎么办?先谢谢大家了!
如果你是使用的 Assetic
的话,那么你需要添加 cssrewrite fileter
,即:
{% stylesheets 'bundles/app/css/*' filter='cssrewrite' %}
这个过滤器是什么意思呢?
在你 assets:dump(或者 assets:install) 的时候,Symfony2 会将你的静态文件(CSS)从 Bundle 中移出到 Web 根目录,因此有些文件的路径就发生了变化(比如在css中引用的图像),从而导致了主题所说的问题。
因此 cssrewrite 过滤器就是专门用来计算 css 与图像之间的相对关系,并直接更新 CSS 中的路径。
跟你举个实际应用中的例子,你现在有两个文件 logo.png 和 style.css
:
/src/AppBundle/Resources/public/img/logo.png
/src/AppBundle/Resources/public/css/style.css
你在 style.css 里引用 logo.png
需要 ../img/logo.png
,对吧?
现在,当你 assets:dump
时,Symfony2
的 Assetic
组件会将 logo.png
和 style.css
导出到 /web 目录,因为 /src 下是不能直接访问的,现在 logo.png 和 style.css
将会被导出在新目录:
/web/bundles/app/img/logo.png
/web/css/11e4a17.css
你会看到,11e4a17.css(style.css
被重命名后的文件) 和 logo.png
的相对关系已经发生了变化,原先的 ../img/logo.png
已经不能引用到 logo.png
了,cssrewrite
的意义就在于,它将更新 11e4a17.css(style.css
) 中的 ../img/logo.png
为 ../bundles/app/img/logo.png
。
啰嗦说这么多,希望能帮到题主。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。