2012-04-09 22 views
11

ben symfony komutu için tek adlı argüman/seçeneği oluşturmak istiyorum. Ve symfony bu 3 seçenek ayırt etmek istiyorum:Symfony2 konsol argümanlar

  • my:command, tamamen açık olan my:command --arg=defalutValue
  • my:command --arg=someValue demektir my:command --arg=null
  • my:command --arg gibi bir şey anlamına gelir.

yani Bu komut altında kod için iki çalışma modu istiyorum: varsayılan değişken ve varsayılan olmayan ek argüman ile ve bu arg varsayılan değere sahip olmalıdır.

ben 2 args oluşturabilir, anlayıp, ama bir-arg-to-kural-onları-bütün çözüm arıyorum.

Yerleşik sınıflarda bunu gerçekleştirebilir miyim yoksa özel olanları mı oluşturmalıyım? Eğer çözüm sadece özel sınıflar ile mevcutsa, lütfen bana nerede başlayacağınızı söyleyin (diğer bir deyişle "... alt sınıfı oluşturun" veya "... adlı bir paket kurun"), çünkü Symfony2'nin mimarisine aşina değilim.

cevap

16

mümkündür:

->addOption('arg', 'a', InputOption::VALUE_NONE) 
  • my: Komut =>$input->getOption('arg') //false
  • my: Komut --arg =>$input->getOption('arg') //true
  • my: Komut --arg = 5 =>$input->getOption('arg') //5
  • corvax tarafından
+5

Hatalı olduğum zaman düzeltin, bu yöntemi ilk defa kullanıyorum, fakat bence bu sonucu elde etmek için üçüncü bir argüman olarak InputOption :: VALUE_OPTIONAL kullanmanız gerekiyor. – manu

+1

Gerçekten de InputOption :: VALUE_NONE ile bir çalışma zamanı istisnası alırsınız: Bu seçenek bir değeri kabul etmez. –

+0

'InputOption :: VALUE_NONE' ile seçenekler bir değer alırsa bir istisna alırız – smarber

-3

Symfony2, ayrı olarak kullanılabilen konsol bileşenine sahiptir. here belgelerini görebilirsiniz. Daha fazla örnek için SensioGeneratorBundle'ın implementations numarasını kontrol edebilirsiniz.

+0

Zaten belgeleri okuyun ve bu ağaç yönlü oluşturmak için hiçbir yol buldu:

GitHub üzerinde de bu konuları bak seçenek/argüman. Ve bu bileşeni ayrı olarak kullanmam gerekmiyor. Bunun çözülebileceği veya onaylanabileceği bir yola ihtiyacım var, bu çözülemedi. – kirilloid