来自命令的 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。
希望对您有所帮助
我在使用命令行中的相关目录时遇到了一些麻烦。
我创建了一个命令(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。
希望对您有所帮助