在命令中调用控制台命令并在 Symfony2 中获取输出

2022-08-30 21:30:55

我在Symfony2中有一些控制台命令,我需要使用一些参数从另一个命令执行一个命令。

成功执行第二个命令后,我需要获取结果(例如数组),而不是显示输出。

我该怎么做?


答案 1

在这里,您可以在命令中有一个基本命令。第二个命令的输出可以是 json,然后您只需解码输出 json 即可检索数组。

$command = $this->getApplication()->find('doctrine:fixtures:load');
$arguments = array(
    //'--force' => true
    ''
);
$input = new ArrayInput($arguments);
$returnCode = $command->run($input, $output);

if($returnCode != 0) {
    $text .= 'fixtures successfully loaded ...';
    $output = json_decode(rtrim($output));
}

答案 2

您必须在参数数组中传递命令,并且为了避免在 doctrine:fixtures:load 中出现确认对话框,您必须传递 --append 而不是 --force

    $arguments = array(
    'command' => 'doctrine:fixtures:load',
    //'--append' => true
    ''
);

或者它将失败,并显示错误消息“没有足够的参数”。


推荐