2017-10-16 45 views
1

Je rencontre un petit problème avec les répertoires relatifs de la ligne de commande.symfony2 chemins de répertoire relatif à partir de la commande

J'ai créé une commande (commande php app/console generate:). Avec cette commande, j'ai besoin de supprimer certains fichiers dans le répertoire "web/myFolder" du projet.

protected function execute(InputInterface $input, OutputInterface $output) 
    {  
     //$directorio = 'myFolder'; /*Do not work*/   
     $directorio = '\XAMPP\htdocs\MiProject\web\myFolder'; 
     $files = scandir($directorio); 

     foreach($files as $f){ /*do something*/ } 
} 

De la commande, je dois écrire le répertoire complet de D:/donc je n'ai pas un répertoire relatif du projet Symfony, comme je le fais dans un contrôleur. Y at-il une solution pour utiliser un répertoire relatif du dossier du projet?

Avec un répertoire non relatif, je devrais remplacer ce répertoire lorsque le projet est placé sur un serveur de production. Je devrais donc le changer beaucoup de temps entre l'environnement de test et de production.

Beaucoup de remerciements.

Répondre

1

Vous pouvez utiliser les paramètres prédéfinis tels que kernel.root_dir qui pointent généralement vers le répertoire où se trouve le fichier AppKernel (<project_root>/app).

donc simplement l'accès aux params situés dans le récipient, comme par exemple

// From controller 
$this->getParameters('kernel.root_dir'); 

ou plus généralement:

// from service/command 
$this->container->getParameters('kernel.root_dir'); 

Donc, dans votre cas devrait être:

$directorio = $this->getContainer()->getParameter('kernel.root_dir').'/../‌​web/myFolder'; 

certains info here in this article.

Hope this aide

+0

Fonctionne parfaitement :) Merci Matteo – Angel

+0

Salut @Angel vous êtes les bienvenus! – Matteo

+1

Mais vous devez changer le paramètre de conteneur par: $ directorio = $ this-> getContainer() -> getParameter ('kernel.root_dir'). '/ ../web/myFolder' :) :) – Angel