在 Symfony2 中配置一个包时,我需要从web
文件夹设置 CSS 文件的静态路径,即config.yml中的一行:
content_css: "%path_to_web%/bundles/mybundle/css/styles.css"
%kernel.root_dir%
返回绝对根服务器路径,但在这种情况下,获取文件夹虚拟路径的方法是什么?web
是否有任何特殊变量,或者我是否需要对该路径进行硬编码?
由于 Symfony 的目录结构是在标准版中定义的,而不是 Symfony2 框架中定义的,所以没有特殊的参数可以使用。
%kernel.root_dir%
是通过__DIR__
在AppKernel
类中使用来定义的。那应该用作基本路径,您可以执行以下操作:%kernel.root_dir%/../web/
你不需要额外的变量。Web 根目录是使用您的网络服务器配置定义的。这就是您配置content_css
选项的方式。
如果您可以通过 简单地访问您的app.php
(或app_dev.php
)http://www.example.com/app.php
,那么所有资产都只是路径可达
content_css: "/bundles/mybundle/css/styles.css"
如果你已经暴露了整个 symfony 目录(严格不推荐)并且你app.php
可以在 下访问http://www.example.com/web/app.php
,那么只需在路径前加上/web
.
content_css: "/web/bundles/mybundle/css/styles.css"
编辑:或者你在parameters.yml
. 如果您阅读本文并将源代码存储在 git 或其他(强烈推荐)中,那么您将拥有一个paramaters.yml.dist
with 默认值,并且每个系统(每个开发人员或生产服务器)都有自己的parameters.yml
. 然后向你的和 prods 添加一个参数(以及一些默认值的 .dist ):
parameters:
# [...] some other parameters
my_web_root: "/myproject/web"
该选项看起来像
content_css: "%my_web_root%/bundles/mybundle/css/styles.css"