我正在创建一个命令来从文件生成帐户。在命令中,我已经通过了一些论点。
$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.
}
答案 0 :(得分:9)
不幸的是,目前还没有办法在Symfony中实现命令参数验证。实现这些检查的最佳方法是在命令中覆盖Symfony\Component\Console\Command::initialize
方法,然后在那里应用验证规则,如果传递的参数无效,则抛出异常。
更新:Matthias Noback实施了symfony-console-form
(https://github.com/matthiasnoback/symfony-console-form),看起来实现Matthias\SymfonyConsoleForm\Console\Command\FormBasedCommand
界面会通过表单组件为您提供基本的验证功能(但必须通过验证来测试它。