symfony 4: Как получить "/public" от RootDir

У меня есть изображение под public папкой.
Как получить каталог изображений в symfony4?
В symfony 3 это эквивалент:

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

Ответ 1

Вы можете использовать либо

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

Или параметр %kernel.project_dir%

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

Ответ 2

Это плохая практика вводить весь container, просто для доступа к параметрам, если вы не находитесь в контроллере. Просто автоматически подключите ParameterBagInterface,

protected $parameterBag;

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

}

а затем получите доступ к вашему параметру следующим образом (в данном случае к каталогу проекта),

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

Надеюсь, кто-нибудь найдет это полезным.

Приветствия.

Ответ 3

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

Ответ 4

В контроллере (также с наследованием AbstractController):

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