问题 symfony2控制台参数


我想创建一个单一的 命名 symfony命令的参数/选项。并希望symfony区分这3个选项:

  • my:command,这意味着什么 my:command --arg=null
  • my:command --arg, 意思是 my:command --arg=defalutValue
  • my:command --arg=someValue,这是完全明确的。

即我想在该命令下使用两种工作模式:默认值为1,非默认值为附加参数,该arg应具有默认值。

我明白,我可以创建2个args,但我正在寻找一个arg-to-rule-them-all解决方案。

是否可以通过内置类实现这一目标,还是应该创建自定义类?如果解决方案仅适用于自定义类,请告诉我,从哪里开始(即“创建...的子类”或“安装名为...的包”),因为我不熟悉Symfony2的架构。


4775
2018-04-09 13:24


起源



答案:


有可能的:

->addOption('arg', 'a', InputOption::VALUE_NONE)
  • 我的:command => $input->getOption('arg') //false
  • 我的:命令--arg => $input->getOption('arg') //true
  • 我的:命令--arg = 5 => $input->getOption('arg') //5

16
2018-05-08 10:14



如果我错了,请纠正我,这是我第一次使用这种方法,但我认为为了获得这个结果,你必须使用InputOption :: VALUE_OPTIONAL作为第三个参数。 - manu
实际上,使用InputOption :: VALUE_NONE,您会收到运行时异常:该选项不接受值。 - Adrien G
同 InputOption::VALUE_NONE 如果选项获得值,我们会得到一个例外 - smarber


答案:


有可能的:

->addOption('arg', 'a', InputOption::VALUE_NONE)
  • 我的:command => $input->getOption('arg') //false
  • 我的:命令--arg => $input->getOption('arg') //true
  • 我的:命令--arg = 5 => $input->getOption('arg') //5

16
2018-05-08 10:14



如果我错了,请纠正我,这是我第一次使用这种方法,但我认为为了获得这个结果,你必须使用InputOption :: VALUE_OPTIONAL作为第三个参数。 - manu
实际上,使用InputOption :: VALUE_NONE,您会收到运行时异常:该选项不接受值。 - Adrien G
同 InputOption::VALUE_NONE 如果选项获得值,我们会得到一个例外 - smarber


corvax的回答是不正确的,不起作用。截至今天,你无法实现这一目标。

它甚至在控制台文档中说明: 使用命令选项

另请参阅GitHub上的这些问题:


1
2018-03-03 09:58





Symfony2有控制台组件,可以单独使用。你可以看到文档 这里。有关更多示例,您可以查看 实现 SensioGeneratorBundle。


-3
2018-04-11 15:42



我已经阅读了文档,发现没有办法创建这个树形选项/参数。而且我不需要单独使用此组件。我需要一种可以解决或批准的方法,这无法解决。 - kirilloid