我在public
文件夹下有一张图片
如何在symfony4中获取我的图像目录?
在symfony 3中,它等同于:
$webPath = $this->get('kernel')->getRootDir() . '/../web/';
答案 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)