Symfony 2 中 CSS 文件中资源的路径
Symfony 2 提供了一种管理资源的机制,例如 CSS 和图像文件,通过Assetic 组件。但是,在某些项目目录结构中,在 CSS 中指定引用资源的正确路径可能是一个挑战。
问题概述
考虑以下目录结构:
... +-src/ | +-MyCompany/ | +-MyBundle/ | +-Resources/ | +-assets/ | +-css/ | +-stylesheets... +-web/ | +-images/ | +-images... ...
在这种情况下,CSS 文件位于 /app/Resources/assets/css 下,而图像位于/网络/图像。目标是从 CSS 文件中引用这些图像。
失败的解决方案
第一个解决方案:绝对路径
将 CSS 文件中的路径更改为绝对 URL 并不是一个可行的解决方案,因为应用程序可能并不总是在根目录中运行
第二个解决方案:Assetic 与 CSSrewrite 过滤器
将 Assetic 与“cssrewrite”过滤器一起使用也会失败,因为生成的代码不会生成指向images.
当前解决方案:相对路径
定义相对于 CSS 文件的图像路径在生产环境中有效,但在开发环境中失败。
工作解决方案
最有效的解决方案是将 CSS 文件存储在可公开访问的目录中,并在部署期间重建 CSS。其工作原理如下:
通过这种方法,CSS 文件在部署期间重新编译,确保它们包含图像的正确路径。图像本身仍然位于 web/images 目录中,但用户无法直接访问它们。
以上是如何在 Symfony 2 项目中正确引用 CSS 文件中的资源?的详细内容。更多信息请关注PHP中文网其他相关文章!