如何获取Symfony2应用程序的根目录?

从控制器内部获取根应用目录的最佳方法是什么?是否可以将其置于控制器外部?

现在我通过将其(从参数)作为参数传递给服务来获取它,如下所示:

services:

    sr_processor:
        class: Pro\Processor
        arguments: [%kernel.root_dir%]

有没有更好,更简单的方法在Symfony2中获取这些信息?


答案 1

2018-10-21更新:

截至本周,已弃用。请改用,如穆扎拉夫·阿里在评论部分所建议的那样。getRootDir()getProjectDir()

—-

使用这个:

$this->get('kernel')->getRootDir();

如果你想要网络根:

$this->get('kernel')->getRootDir() . '/../web' . $this->getRequest()->getBasePath();

这将从控制器操作方法工作...

编辑:至于服务,我认为你这样做的方式尽可能干净,尽管我会传递完整的内核服务作为论据......但这也会做这个把戏...


答案 2

在Symfony 3.3中,您可以使用

$projectRoot = $this->get('kernel')->getProjectDir();

以获取 Web/项目根目录。


推荐