我在命令行中遇到了相关目录的一点麻烦。
我创建了一个命令(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中一样。是否有任何解决方案可以使用项目文件夹中的相对目录?
对于非相对目录,我应该在将项目放在生产服务器上时替换此目录。所以我应该在测试和生产环境之间多次改变它。
非常感谢。
答案 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。
希望这个帮助