2012-04-09 86 views
11

我想爲symfony命令創建一個名爲參數/選項的單個。而想要的symfony區分這些3個選項:symfony2控制檯參數

  • my:command,這意味着像my:command --arg=null
  • my:command --arg,這意味着my:command --arg=defalutValue
  • my:command --arg=someValue,這是完全明確的。

I.e.我希望在該命令下有兩種工作模式:默認值和非默認值,並且該參數應該有默認值。

據我所知,我可以創建2個參數,但我正在尋找一個arg-to-rule-them-all解決方案。

是否有可能通過內置類來完成該操作,還是應該創建自定義類?如果解決方案僅適用於自定義類,請告訴我,從哪裏開始(即「創建...的子類」或「安裝名爲...的包」),因爲我不熟悉Symfony2的體系結構。

回答

16

它是可能的:

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

糾正我,如果我錯了,這是我第一次使用這種方法,但我認爲,爲了獲得這個結果,你必須使用InputOption :: VALUE_OPTIONAL作爲第三個參數。 – manu 2014-09-16 12:46:03

+1

事實上,使用InputOption :: VALUE_NONE會得到一個運行時異常:該選項不接受值。 – 2015-01-13 09:48:06

+0

使用'InputOption :: VALUE_NONE',如果選項得到一個值,我們會得到一個異常 – smarber 2015-05-27 16:02:20

-3

Symfony2具有可單獨使用的控制檯組件。你可以看到文件here。有關更多示例,您可以檢查SensioGeneratorBundle的implementations

+0

我已經閱讀文檔,發現沒有辦法來創建此樹路選項/參數。我不需要單獨使用這個組件。我需要一種可以解決或批准的方式,這是無法解決的。 – kirilloid 2012-04-12 07:35:55

1