如何从其他命令调用具有非值(InputOption :: VALUE_NONE)参数的命令?

时间:2017-12-07 13:32:49

标签: symfony

如果我从命令行执行: php bin / console doctrine:migrations:migrate -n --em = views

一切顺利。

但是,当我尝试从另一个命令执行此命令时,我不知道如何将InputOption :: VALUE_NONE参数放入ArrayInput。

private function executeMigrate($connection = null) {
    $theCommandStr = 'doctrine:migrations:migrate';
    $command = $this->getApplication()->find($theCommandStr) ;
    if ($command)
    {
        $arguments = [];
        $arguments['-n'] = null; //<-- THE PROBLEM IS HERE!
        $arguments['--em'] = 'views';

        $input = new ArrayInput($arguments);
        $output = new BufferedOutput();
        $returnCode = $command->run($input, $output);

        if($returnCode == 0) {
            echo "OK";
        } else {
            echo "KO";
        }
    }
}

我已经测试过了(没有运气): $ arguments [' - n'] = null; $ arguments [' - n'] =“”;

使用这两个选项,命令已执行,但忽略了-n修饰符。

我正在使用Symfony v.3.3。

1 个答案:

答案 0 :(得分:0)

解决。如果要在其他命令中的命令中使用--no-interaction或-n modifier,则必须使用ArrayInput :: setInteractive方法:

以前的代码如下:

private function executeMigrate($connection = null) {
    $theCommandStr = 'doctrine:migrations:migrate';
    $command = $this->getApplication()->find($theCommandStr) ;
    if ($command)
    {
        $arguments = [];
        $arguments['--em'] = 'views';

        $input = new ArrayInput($arguments);
        $input->setInteractive(false);
        $output = new BufferedOutput();
        $returnCode = $command->run($input, $output);

        if($returnCode == 0) {
            echo "OK";
        } else {
            echo "KO";
        }
    }
}

否则,它不会起作用。