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

时间:2014-11-17 10:10:21

标签: symfony console

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

   $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'))) {
    // ....
   }

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

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

1 个答案:

答案 0 :(得分:9)

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

更新:Matthias Noback实施了symfony-console-formhttps://github.com/matthiasnoback/symfony-console-form),看起来实现Matthias\SymfonyConsoleForm\Console\Command\FormBasedCommand界面会通过表单组件为您提供基本的验证功能(但必须通过验证来测试它。