Symfony 2:验证控制台命令参数

Tej*_*sai 6 console symfony

我正在创建一个命令来从文件生成帐户.在命令中,我已经通过了一些论点.

   $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.");
Run Code Online (Sandbox Code Playgroud)

我只是在考虑是否有任何方法可以检查传递的参数类型.现在我正在检查它,

   if (is_numeric($input->getArgument('account-id'))) {
    // ....
   }
Run Code Online (Sandbox Code Playgroud)

无论如何我可以创建一个检查类型的验证器,我只需要调用验证功能.

   if ($input->validate() === false) {
     // show error message and return.
   }
Run Code Online (Sandbox Code Playgroud)

kix*_*kix 9

不幸的是,目前没有办法在Symfony中实现命令参数验证.实现这些检查的最佳方法是Symfony\Component\Console\Command::initialize在命令中重写方法,然后在那里应用验证规则,如果传递的参数无效则抛出异常.

更新: Matthias Noback已实现symfony-console-form(https://github.com/matthiasnoback/symfony-console-form),看起来实现Matthias\SymfonyConsoleForm\Console\Command\FormBasedCommand接口将通过表单组件为您提供基本的验证功能(必须通过验证测试它).