2012-04-09 9 views
11

symfonyコマンドの引数/オプションという名前のを1つ作成します。そして、symfonyはこれらの3つのオプションを区別したい:symfony2コンソール引数

  • my:command、完全に明示されている、my:command --arg=defalutValue
  • my:command --arg=someValueを意味my:command --arg=null
  • my:command --arg、のようなものを意味しています。

e.e.e.私はそのコマンドの下でコードの2つの作業モードを望む:デフォルトのものと追加の引数を持つデフォルト以外のもの、そしてそのargはデフォルト値を持つべきである。

私は2つのargsを作成することができますが、私は1つの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を第3引数として使用する必要があると思います。 – manu

+1

実際、InputOption :: VALUE_NONEではランタイム例外が発生します。このオプションは値を受け入れません。 –

+0

'InputOption :: VALUE_NONE'では、オプションが値を取得すると例外が発生します – smarber

-3

Symfony2には別に使用できるコンソールコンポーネントがあります。文書hereを見ることができます。例えば、SensioGeneratorBundleのimplementationsを確認することができます。

+0

は、私はすでにマニュアルを読み、このツリーウェイを作成する方法を発見した:

はGitHubの上でも、これらの問題を参照してください。オプション/引数。そして、私はこのコンポーネントを別々に使う必要はありません。これを解決する方法が必要ですが、これは解決できませんでした。 – kirilloid

1
関連する問題