2011-05-24 21 views
8

के साथ फॉर्म मान्य करें तो ढांचा कोडइग्निटर 2.0.2 है। मेरे पास एक ऐसा फॉर्म है जिसमें फ़ील्ड के समूह हैं जो डेटाबेस में पंक्तियों से मेल खाते हैं। क्षेत्रों के नाम प्रारूप में हैं:कोडइग्निटर: बहुआयामी POST डेटा

opt[0][foo] 
opt[0][bar] 
opt[1][foo] 
opt[1][bar] 
etc... 

सूचकांक (1,2, आदि ...) डेटाबेस में आईडी पंक्ति के अनुरूप नहीं है, यह बस के समूहों को विभाजित करने के लिए एक रास्ता है खेत। इंडेक्स में अंतर हो सकते हैं क्योंकि उपयोगकर्ता फ़ील्ड समूहों की मनमानी संख्या को जोड़ने और निकालने में सक्षम हैं। सभी समूह समान हैं, यानी, वे एक ही दूसरे स्तर के नाम वाले फ़ील्ड का एक ही सेट होते हैं।

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

array(
    'field' => 'opt[][foo]', 
    'label' => 'Foo', 
    'rules' => 'required' 
) 

मैं मैं सिर्फ बहुत ज्यादा की उम्मीद कर रहा था और CodeIgniter का समर्थन नहीं करता मैं इसे क्या करने की जरूरत अनुमान लगा रहा हूँ। मौजूदा फॉर्म सत्यापन पुस्तकालय एक विकल्प है ताकि कोई भी एक ही स्थिति में रहा हो और कुछ सुझाव प्रदान कर सकें जो बहुत स्वागत करेंगे।

अद्यतन:

बस थोड़ा अतिरिक्त जानकारी, मैं भी एक विशेष रूप से अनुक्रमित क्षेत्र (देखें नीचे) मान्य की कोशिश की है और वह भी काम नहीं किया ... जैसा कि मैं समझता हूँ कि यह बहुआयामी सत्यापन में काम करना चाहिए विशिष्ट मामले:

array(
    'field' => 'opt[0][foo]', 
    'label' => 'Foo', 
    'rules' => 'required' 
) 

उत्तर

0

आप मान्य वर्ग के लिए callback functions पर एक नज़र रखना चाहिए - यह आप पूरा आप सत्यापन के लिए क्या जरूरत है मदद करनी चाहिए।

+0

कॉलबैक फ़ंक्शन यहां समस्या नहीं हैं। क्षेत्र के नाम समस्या हैं। – Endophage

2

निम्नलिखित नियंत्रक कोड सीआई 2.0.2

public function test() { 

     $this->load->library('form_validation'); 
     $this->load->helper('form'); 

     $this->form_validation->set_rules('test[test1][test2]', 'Test', 'required|valid_email'); 

     $this->form_validation->run(); 

     echo validation_errors(); 

     echo form_open($this->uri->uri_string()); 
     echo form_input('test[test1][test2]', set_value('test[test1][test2]')); 
     echo form_submit(); 
     echo form_close(); 

    } 
+0

वास्तव में यह करता है! सरणी के साथ भी काम करते हैं, मुझे स्पष्ट रूप से अतीत में इसके साथ समस्याएं याद आती हैं, शायद 2.0 में एक अद्यतन था जो इसे ठीक करता था? या मैं गलत हूँ और यह कभी कोई मुद्दा नहीं था? –

+0

कृपया प्रश्न को फिर से पढ़ें। POST सरणी में पहले स्तर तत्वों की मनमानी संख्या है। यानी मैं परीक्षण कर सकता था [0-5] या मैं परीक्षण [0-50] हो सकता था। मुझे लगता है कि मैं नियमों को एक लूप में सेट कर सकता हूं लेकिन यह वास्तव में बदसूरत समाधान है और मैं उन्हें एक कॉन्फ़िगरेशन फ़ाइल में बहुत अधिक महत्व देता हूं। – Endophage

+0

इसके अलावा, इसे एक संख्यात्मक सूचकांक के साथ फिर से प्रयास करें, इसलिए 'परीक्षण [0] [test2] 'जैसा कि मेरा रिटर्न डेटा प्रारूप है। जैसा कि मैंने अद्यतन में कहा था, वह प्रारूप मेरे लिए काम नहीं करता था। – Endophage

1

पर मेरे लिए काम करता आप प्रत्येक इनपुट के लिए opt चर और सेट सत्यापन नियमों के माध्यम से लूप के लिए इसका उपयोग कर सकते हैं।

if(!empty($opt)) 
    { 
     foreach($opt as $id => $value) 
     { 
      $this->form_validation->set_rules('opt[' . $id . '][foo]', 'Foo', 'required'); 
      $this->form_validation->set_rules('opt[' . $id . '][bar]', 'Bar', 'required'); 
     } 
    } 
संबंधित मुद्दे