Ответ 1
Вы можете использовать либо
$webPath = $this->get('kernel')->getProjectDir() . '/public/';
Или параметр %kernel.project_dir%
$container->getParameter('kernel.project_dir') . '/public/';
У меня есть изображение под public
папкой.
Как получить каталог изображений в symfony4?
В symfony 3 это эквивалент:
$webPath = $this->get('kernel')->getRootDir() . '/../web/';
Вы можете использовать либо
$webPath = $this->get('kernel')->getProjectDir() . '/public/';
Или параметр %kernel.project_dir%
$container->getParameter('kernel.project_dir') . '/public/';
Это плохая практика вводить весь container
, просто для доступа к параметрам, если вы не находитесь в контроллере. Просто автоматически подключите ParameterBagInterface
,
protected $parameterBag;
public function __construct(ParameterBagInterface $parameterBag)
{
$this->parameterBag = $parameterBag;
}
а затем получите доступ к вашему параметру следующим образом (в данном случае к каталогу проекта),
$this->parameterBag->get('kernel.project_dir');
Надеюсь, кто-нибудь найдет это полезным.
Приветствия.
parameters:
webDir: '%env(DOCUMENT_ROOT)%'
В контроллере (также с наследованием AbstractController):
$projectDir = $this->getParameter('kernel.project_dir');