What is the best way to get the root app directory from inside the controller? Is it possible to get it outside of the controller?
Now I get it by passing it (from parameters) to the service as an argument, like this:
services: sr_processor: class: Pro\Processor arguments: [%kernel.root_dir%]
Is there a better, simpler way to get this information in Symfony2?
This question is tagged with
~ Asked on 2012-02-09 17:29:59
As of this week,
getRootDir() was deprecated. Please use
getProjectDir() instead, as suggested in the comment section by Muzaraf Ali.
And if you want the web root:
$this->get('kernel')->getRootDir() . '/../web' . $this->getRequest()->getBasePath();
this will work from controller action method...
EDIT: As for the services, I think the way you did it is as clean as possible, although I would pass complete kernel service as an argument... but this will also do the trick...
~ Answered on 2012-02-09 17:34:48
In Symfony 3.3 you can use
$projectRoot = $this->get('kernel')->getProjectDir();
to get the web/project root.
~ Answered on 2017-09-21 11:37:29