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

symfony2 relative directory routes from 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 项目的相对目录,就像我在任何控制器中所做的那样。有没有使用项目文件夹中的相对目录的解决方案?

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

非常感谢。

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

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

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

希望对您有所帮助