Как передать аргумент при попытке запустить команду из другой команды, используя компонент консоли?

У меня есть консольная команда symfony2 task:execute который имеет обязательный аргумент taskHandle,

protected function configure()
{
parent::configure();
$this
->setName("task:execute")
->setDescription("...")
->addArgument(
'taskHandle',
InputArgument::REQUIRED,
'Which task would you like to run?'
);
...
}

Чтобы выполнить некоторую пакетную работу, я хочу выполнить эту команду из другой команды. Это ускользает от меня относительно того, как я должен передать аргумент команде.

В моем BatchCommand я попытался:

$command = $this->getApplication()->find('task:execute');
foreach ($handles as $handle) {
$input = new ArgvInput([
'taskHandle', $handle
]);

$command->run($input, $output);
}

или же

$command = $this->getApplication()->find('task:execute');
foreach ($handles as $handle) {
$executeInput = new StringInput($handle);
$command->run($executeInput, $output);
}

Уступая в:

Invalid taskhandle:  does not exist.

Я оба сбит с толку, что аргумент становится в нижнем регистре. Тем не менее, я выполняю: задачи работают при вызове самостоятельно. Передача аргумента из другой команды является проблемой.

0

Решение

Вы можете сделать это, отправив ArrayInput с необходимыми параметрами:

$command = $this->getApplication()->find('doctrine:database:drop');

$arguments = array(
'command' => 'doctrine:database:drop',
'--force'  => true,
);

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]