2012-04-09 9 views
11

मैं सिग्फ़नी कमांड के लिए तर्क/विकल्प नामक एक बनाना चाहता हूं। और सिम्फोनी उन 3 विकल्प को विशिष्ट बनाना:symfony2 कंसोल तर्क

  • my:command है, जो की तरह my:command --arg=null
  • my:command --arg, जो my:command --arg=defalutValue
  • my:command --arg=someValue का मतलब है, जो पूरी तरह स्पष्ट है कुछ का मतलब है।

आईई। मुझे उस कमांड के तहत कोड के लिए दो कार्यशील मोड चाहिए: डिफ़ॉल्ट तर्क और अतिरिक्त तर्क के साथ गैर-डिफ़ॉल्ट, और उस तर्क के पास डिफ़ॉल्ट मान होना चाहिए।

मैं समझता हूं कि मैं 2 तर्क बना सकता हूं, लेकिन मैं एक-तर्क-से-नियम-उन सभी समाधानों की तलाश में हूं।

क्या इसे अंतर्निहित कक्षाओं के साथ पूरा करना संभव है या क्या मुझे कस्टम बनाना चाहिए? यदि समाधान केवल कस्टम कक्षाओं के साथ उपलब्ध है, तो कृपया मुझे बताएं, कहां से शुरू करें (यानी "उप-वर्ग बनाएं ..." या "नामित बंडल इंस्टॉल करें ..."), क्योंकि मैं सिम्फनी 2 के आर्किटेक्चर से परिचित नहीं हूं।

उत्तर

16

यह संभव है:

->addOption('arg', 'a', InputOption::VALUE_NONE) 
  • मेरी: कमांड =>$input->getOption('arg') //false
  • मेरी: आदेश --arg =>$input->getOption('arg') //true
  • मेरी: आदेश --arg = 5 =>$input->getOption('arg') //5
+5

अगर मैं गलत हूं, तो मुझे सही करें, यह पहली बार है जब मैं इस विधि का उपयोग करता हूं, लेकिन मुझे लगता है कि इस परिणाम को प्राप्त करने के लिए आपको इनपुटऑप्शन :: VALUE_OPTIONAL को तीसरे तर्क के रूप में उपयोग करना होगा। – manu

+1

वास्तव में इनपुटऑप्शन :: VALUE_NONE के साथ आपको रनटाइम अपवाद मिलता है: विकल्प मान को स्वीकार नहीं करता है। –

+0

'इनपुटऑप्शन :: VALUE_NONE' के साथ हमें विकल्प मिलते हैं तो हमें अपवाद मिलता है – smarber

-3

Symfony2 में कंसोल घटक है जिसे अलग से इस्तेमाल किया जा सकता है। आप प्रलेखन here देख सकते हैं। अधिक उदाहरण के लिए आप सेंसियो जेनरेटरबंडल के implementations देख सकते हैं।

+0

मैं पहले से ही प्रलेखन पढ़ सकते हैं और इस पेड़-वे बनाने के लिए कोई रास्ता नहीं मिला विकल्प/तर्क। और मुझे इस घटक को अलग से उपयोग करने की आवश्यकता नहीं है। मुझे हल करने या अनुमोदन के तरीके की आवश्यकता है, इसे हल नहीं किया जा सका। – kirilloid

1

कॉर्वैक्स द्वारा उत्तर गलत है और काम नहीं करता है। आज तक, आप इसे हासिल नहीं कर सकते हैं।

यह कंसोल दस्तावेज़ में भी कहा गया है: Using Command Options

GitHub पर भी इन मुद्दों को देखें: