首页 >web前端 >css教程 >如何在 Symfony 2 项目中正确引用 CSS 文件中的资源?

如何在 Symfony 2 项目中正确引用 CSS 文件中的资源?

Patricia Arquette
Patricia Arquette原创
2024-11-16 06:06:021027浏览

How to Correctly Reference Assets in CSS Files Within a Symfony 2 Project?

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。其工作原理如下:

  1. 将 CSS 文件移至 Resources/public/css。
  2. 更新 Twig 模板以引用 public 目录中的 CSS 文件。
  3. 使用 asset:install --symlink 命令在适当的位置创建指向公共 CSS 文件的符号链接。
  4. 在部署期间,删除公共目录中的原始 CSS 文件,仅保留符号链接。

通过这种方法,CSS 文件在部署期间重新编译,确保它们包含图像的正确路径。图像本身仍然位于 web/images 目录中,但用户无法直接访问它们。

以上是如何在 Symfony 2 项目中正确引用 CSS 文件中的资源?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn