首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从控制器内部获取Symfony2中web目录的服务器路径?

如何从控制器内部获取Symfony2中web目录的服务器路径?
EN

Stack Overflow用户
提问于 2012-02-14 02:23:07
回答 7查看 113.2K关注 0票数 65

问题如下:

如何从控制器内部(或出于此原因从任何其他位置)获取Symfony2中web目录的服务器路径

我已经找到了什么(也可以在这里搜索):

这在关于Doctrine文件处理的食谱文章中得到了建议

代码语言:javascript
复制
$path = __DIR__ . '/../../../../web';

通过搜索找到,只能从控制器内部使用(或注入内核的服务):

代码语言:javascript
复制
$path = $this->get('kernel')->getRootDir() . '/../web';

那么,有没有绝对没有办法至少获得路径的“web”部分呢?例如,如果我决定将其重命名或移动或其他什么,该怎么办?

在第一个symfony中,一切都很简单,我可以通过调用静态sfConfig:: get ()方法从代码中的任何位置获得所需的所有内容。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-02-14 03:32:37

实际上,在Symfony2中没有直接获取webdir路径的方法,因为框架完全独立于webdir。

您可以在内核类的实例上使用getRootDir(),就像编写代码一样。如果您考虑在将来重命名/web目录,您应该使其可配置。例如,AsseticBundle在其DI配置中就有这样一个选项(参见herehere)。

票数 47
EN

Stack Overflow用户

发布于 2014-01-16 00:39:31

要从控制器外部访问根目录,只需在服务配置中将%kernel.root_dir%作为参数注入即可。

代码语言:javascript
复制
service_name:
    class: Namespace\Bundle\etc
    arguments: ['%kernel.root_dir%']

然后,您可以在类构造函数中获取web根:

代码语言:javascript
复制
public function __construct($rootDir)
{
    $this->webRoot = realpath($rootDir . '/../web');
}
票数 44
EN

Stack Overflow用户

发布于 2016-09-21 02:34:59

您正在使用Symfony,请考虑“依赖注入”^^

在我所有的SF项目中,我都使用parameters.yml:

代码语言:javascript
复制
web_dir: "%kernel.root_dir%/../web"

所以我可以在控制器中安全地使用这个参数:

代码语言:javascript
复制
$this->getParameter('web_dir');
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9265788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档