2014-11-17 10 views
6

मैं एक फ़ाइल से खातों को उत्पन्न करने के लिए एक कमांड बना रहा हूं। कमांड में मैंने कुछ तर्क पारित किए हैं।सिम्फनी 2: कंसोल कॉमांड तर्क मान्य करें

$this 
    ->setName('batch:create') 
    ->setDescription('xyz') 
    ->setHelp('xyz') 
    ->addArgument('account-id', InputArgument::REQUIRED, "Set the account id.") 
    ->addArgument('name', InputArgument::REQUIRED, "Set the account name."); 

मैं बस सोच रहा था कि क्या कोई तरीका है कि मैं तर्क का प्रकार पारित कर सकता हूं। अब मैं इसे इस तरह जाँच कर रहा हूँ, के लिए

if (is_numeric($input->getArgument('account-id'))) { 
    // .... 
    } 

वहाँ वैसे भी मैं एक सत्यापनकर्ता उस प्रकार की जाँच करता है बना सकते हैं और मैं बस समारोह को मान्य कॉल करनी होगी है।

if ($input->validate() === false) { 
    // show error message and return. 
    } 
+0

मैंने कुछ नए विवरणों के साथ अपना जवाब अपडेट कर दिया है, ऐसा लगता है कि अब हमारे पास एक बेहतर समाधान है। – kix

उत्तर

9

दुर्भाग्यवश, वर्तमान में सिम्फनी में कमांड तर्क सत्यापन लागू करने का कोई तरीका नहीं है। इन चेक को लागू करने का सबसे अच्छा तरीका आपके आदेश में Symfony\Component\Console\Command::initialize विधि को ओवरराइड करना होगा और उसके बाद सत्यापन नियम लागू करना होगा, यदि पास किए गए तर्क अमान्य हैं तो अपवाद फेंकना।

अद्यतन: मथायस Noback symfony-console-form (https://github.com/matthiasnoback/symfony-console-form) लागू किया गया है, और Matthias\SymfonyConsoleForm\Console\Command\FormBasedCommand इंटरफेस को लागू प्रपत्र घटक के माध्यम से आप बुनियादी मान्यता क्षमताओं देना होगा की तरह दिखता है (, हालांकि मान्यता के साथ यह परीक्षण करने के लिए है)।

+0

आप सही हैं। मुझे लगता है कि अब मुझे अपना वर्तमान कोड रखना है। –

+0

लिंक के लिए धन्यवाद। इसकी एक बार कोशिश करूंगा। –