Symfony 2: Проверка аргументов консольных команд

Я создаю команду для создания учетных записей из файла. В команде я передал несколько аргументов.

   $this
  ->setName('batch:create')
  ->setDescription('xyz')
  ->setHelp('xyz')
  ->addArgument('account-id', InputArgument::REQUIRED, "Set the account id.")
  ->addArgument('name', InputArgument::REQUIRED, "Set the account name.");

Я просто думал, есть ли способ проверить тип переданного аргумента. Сейчас я проверяю это вот так,

   if (is_numeric($input->getArgument('account-id'))) {
    // ....
   }

в любом случае я могу создать валидатор, который проверяет тип, и мне просто нужно вызвать функцию validate.

   if ($input->validate() === false) {
     // show error message and return.
   }

1 ответов


к сожалению, в настоящее время нет способа реализовать проверку аргумента команды в Symfony. Лучшим способом реализации этих проверок было бы переопределение Symfony\Component\Console\Command::initialize метод в вашей команде, а затем применение правил проверки там, бросая исключения, если переданные аргументы недействительны.

обновление: Матиас Нобак реализовал symfony-console-form (https://github.com/matthiasnoback/symfony-console-form), и выглядит как реализация Matthias\SymfonyConsoleForm\Console\Command\FormBasedCommand интерфейс даст вам основные возможности проверки через компонент формы (придется протестировать его с проверкой).