Comment récupérer le répertoire racine d'un projet Symfony?

Quelle est la meilleure façon de récupérer le répertoire racine de l’application depuis l’intérieur du contrôleur ? Est-il possible de le récupérer en dehors du contrôleur ?

Actuellement, je le récupère en le passant (à partir des paramètres) au service en tant qu’argument, comme ceci :

services:

    sr_processor:
        class: Pro\Processor
        arguments: [%kernel.root_dir%]

Existe-t-il une meilleure façon, plus simple, de récupérer ces informations dans Symfony?

Votre solution est la meilleure. Pour Symfony 3.3 et plus, utilisez %kernel.project_dir% pour récupérer la racine de votre projet.

getRootDir() a été déprécié. Veuillez plutôt utiliser getProjectDir().

Utilisez ça :

$this->get('kernel')->getRootDir();

Et si tu veux la racine du répertoire web :

$this->get('kernel')->getRootDir() . '/../web' . $this->getRequest()->getBasePath();

Cela fonctionnera à partir du méthode d’action du contrôleur…

Quant aux services, je pense que la façon dont vous l’avez fait est aussi propre par rapport aux autres, bien que je passerais le service complet du noyau comme argument… mais cela fera aussi l’affaire…

Dans Symfony 3.3 vous pouvez utiliser

$projectRoot = $this->get('kernel')->getProjectDir();

pour récupérer la racine du web/projet.