Symfony 2 中 CSS 资源的路径
问题:
在 Symfony 2 项目中,您有一个包含图像和字体引用的 CSS 文件(例如 url(..))。您希望在 CSS 中引用这些文件,而不直接在公共目录中暴露原始文件。
可能的解决方案:
解决方案 1:绝对路径
将 CSS 中的所有路径更改为绝对路径并不是一个合适的解决方案,因为应用程序可能并不总是从同一个子目录访问。
解决方案 2:使用“cssrewrite”的 Assetic " 过滤器
将 Assetic 与“cssrewrite”过滤器一起使用可以帮助重写路径,但通常会导致生成不正确的路径。
解决方案 3:相对路径
将 CSS 中的所有路径更改为相对于样式表位置是有效的,但在开发环境中除外,其中 CSS 路径包含“/app_dev.php”并导致图像路径出现“NotFoundHttpException”。
工作解决方案:
唯一的工作解决方案是将原始 CSS 文件放在私有目录中(例如“Resources/assets/css”)并将其编译为使用 Assetic 的公共目录(例如“web/css”)。
代码结构:
... +-src/ | +-MyCompany/ | +-MyBundle/ | +-Resources/ | +-assets/ | +-css/ | +-stylesheets... +-web/ | +-css/ | +-stylexyz.css | +-images/ | +-images... ...
Assetic Twig 代码:
{% stylesheets '@MyCompanyMyBundle/Resources/assets/css/*.css' filter="cssrewrite" %} <link rel="stylesheet" href="{{ asset_url }}" /> {% endstylesheets %}
编译过程:
此过程将确保 CSS 文件以正确的图像路径编译到公共目录中:
优点:
以上是如何在 Symfony 2 中管理 CSS 资产路径以实现安全高效的部署?的详细内容。更多信息请关注PHP中文网其他相关文章!