在Symfony2中的config.yml中寻址Web路径

时间:2013-05-12 19:51:35

标签: php symfony

在Symfony2中配置一个捆绑包时,我需要设置一个来自web文件夹的CSS文件的静态路径,即来自 config.yml 的一行:

content_css: "%path_to_web%/bundles/mybundle/css/styles.css"

%kernel.root_dir%返回绝对根服务器路径,但在这种情况下,获取虚拟路径到web文件夹的方式是什么?是否有任何特殊变量或我是否需要对该路径进行硬编码?

2 个答案:

答案 0 :(得分:4)

由于Symfony的目录结构是在Standard Edition而不是Symfony2框架中定义的,因此没有特殊参数可供使用。

%kernel.root_dir%是使用__DIR__类中的AppKernel定义的。这是应该用作基本路径的那个,您可以执行以下操作:%kernel.root_dir%/../web/

答案 1 :(得分:4)

您不需要额外的变量。 Web根目录是使用您的Web服务器配置定义的。这就是配置content_css选项的方式。

如果您可以通过app.phpapp_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中的参数。如果您阅读this并将源存储在git或其他(强烈推荐)中,那么您有paramaters.yml.dist默认值,并且每个系统(每个开发人员或生产服务器)都有自己的{{1} }}。然后为你的和prods添加一个参数(还有一些默认的.dist):

parameters.yml

该选项看起来像

parameters:
    # [...] some other parameters
    my_web_root: "/myproject/web"