Моя консольная команда имеет два параметра (а не аргументы).Как настроить параметры для команды консоли
Это мои коды команд
class crawlerCommand extends ContainerAwareCommand
{
protected function configure()
{
$this
->setName('top:crawler')
->setDescription('Greet someone')
->addOption('opt1', null, InputOption::VALUE_REQUIRED, 'option1')
->addOption('opt2',null, InputOption::VALUE_OPTIONAL, 'option2');
я пытаюсь вызвать команду от контроллера
для примера я хочу сделать эту консольную команду от контроллера
$ app/console top:crawler --opt1=s --opt2=2
поэтому Я сделал этот код.
public function indexAction(){
$command = $this->get('crawlerCommandService');
$inputDefinition = new InputDefinition(array(
new InputOption('opt1', 's', InputOption::VALUE_OPTIONAL),
new InputOption('opt2', '2', InputOption::VALUE_OPTIONAL),
));
$input = new ArgvInput(array('argv' => 'app'));
$input->bind($inputDefinition);
$output = new ConsoleOutput();
$returnCode = $command->run($input, $output);
Однако он не работает.
Просьба дать некоторый намек.
Я могу решить проблему, используя ArrayInput вместо ArgvInput.
Здесь я записываю код.
$command = $this->get('crawlerCommandService');
$output = new ConsoleOutput();
$arguments = array(
'--opt1' => 's',
'--opt2' => '2'
);
$input = new ArrayInput($arguments);
$returnCode = $command->run($input, $output);
Какая польза от вызова команды? Конечно, если вы хотите повторить логику, тогда у вас будет все это в службе, которую вы можете вызвать отдельно. Насколько я вижу. – qooplmao