来自命令的symfony2相对目录路由

时间:2017-10-16 09:06:40

标签: symfony routes directory command

我在命令行中遇到了相关目录的一点麻烦。

我创建了一个命令(php app / console generate:command)。使用此命令,我需要删除" web / myFolder"中的一些文件。项目目录。

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*/ }
}

从命令中,我必须从D编写完整的目录:/所以我没有symfony项目的相对目录,就像我在任何Controller中一样。是否有任何解决方案可以使用项目文件夹中的相对目录?

对于非相对目录,我应该在将项目放在生产服务器上时替换此目录。所以我应该在测试和生产环境之间多次改变它。

非常感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用kernel.root_dir之类的预定义参数,这些参数通常指向AppKernel文件所在的目录(<project_root>/app)。

所以只需访问位于容器中的params,例如

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

或更一般地说:

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

所以在你的情况下应该是:

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

一些信息here in this article

希望这个帮助