symfony 4:如何从RootDir获取“/ public”

时间:2018-02-02 14:54:32

标签: symfony symfony4

我在public文件夹下有一张图片 如何在symfony4中获取我的图像目录?
在symfony 3中,它等同于:

$webPath = $this->get('kernel')->getRootDir() . '/../web/';

6 个答案:

答案 0 :(得分:10)

您可以使用

$webPath = $this->get('kernel')->getProjectDir() . '/public/'; 

或参数%kernel.project_dir%

$container->getParameter('kernel.project_dir') . '/public/';

答案 1 :(得分:8)

不好的做法是注入整个container,只是为了访问参数(如果您不在控制器中)。只需像这样自动ParameterBagInterface接线,

protected $parameterBag;

public function __construct(ParameterBagInterface $parameterBag)
{
    $this->parameterBag = $parameterBag;

}

然后像这样访问您的参数(在本例中为项目目录)

$this->parameterBag->get('kernel.project_dir');

希望有人会对此有所帮助。

干杯。

答案 2 :(得分:3)

parameters:
    webDir: '%env(DOCUMENT_ROOT)%'

答案 3 :(得分:3)

您可以将KernelInterface注入服务或其他任何东西,然后使用$kernel->getProjectDir()获取项目目录:

<?php

namespace App\Service;

use Symfony\Component\HttpKernel\KernelInterface;

class Foo
{
    protected $projectDir;

    public function __construct(KernelInterface $kernel)
    {
        $this->projectDir = $kernel->getProjectDir();
    }

    public function showProjectDir()
    {
        echo "This is the project directory: " . $this->projectDir;
    }
}

答案 4 :(得分:0)

在Controller中(也继承了AbstractController):

$projectDir = $this->getParameter('kernel.project_dir');

答案 5 :(得分:0)

Symfony 4.3 开始,我们可以使用新的 {{1} } 类。

New in Symfony 4.3: URL Helper

getAbsoluteUrl()