2013-07-21 8 views
7

में सरणी मान को सत्यापित करने के लिए कैसे करें मेरे पास मेरे फॉर्म कार्य अनुभव में है जो संगठन नाम, विभाग का नाम, स्थिति और अवधि के रूप में इनपुट के साथ गतिशील रूप से जोड़ा जाता है।कोडनिर्देशक

<tr> 
    <td><span class="serial_no">1</span></td> 
    <td><input type="text" name="organization[]" size="50"/></td> 
    <td><input type="text" name="department[]" size="50"></td> 
    <td><input type="text" name="positions[]" size="40"></td> 
    <td><input type="text" name="duration[]"></td> 
</tr> 

जबकि सीआई में मान्य मैं निम्नलिखित किया:

$organization = $this->input->post('organization'); 
$department = $this->input->post('department'); 
$positions = $this->input->post('positions'); 
$duration  = $this->input->post('duration'); 

//printr($organization); 
for($i = 0; $i < count($organization); $i++) 
{ 
    $org = $organization[$i]; 
    $dept = $department[$i]; 
    $pos = $positions[$i]; 
    $dura = $duration[$i]; 

    $this->form_validation->set_rules($org, "Organization", "trim|xss_clean|max_length[1]"); 
    $this->form_validation->set_rules($dept, "Department", "trim|xss_clean|max_length[50]"); 
    $this->form_validation->set_rules($pos, "Position", "trim|xss_clean|max_length[40]"); 
    $this->form_validation->set_rules($dura, "Duration", "trim|xss_clean|integer"); 
} 

और के रूप में त्रुटि प्रदर्शित:

<?php 
    echo form_error("organization[]"); 
    echo form_error("department[]"); 
    echo form_error("positions[]"); 
    echo form_error("duration[]"); 
?> 

अब समस्या यह पूर्णांक के रूप में अवधि की पुष्टि नहीं करता है। यहां तक ​​कि अगर मैं कुछ यादृच्छिक अल्फा वर्ण डालता हूं तो यह त्रुटियों को नहीं दिखाता है।

जब मैं इस प्रकार सत्यापित करें:

$this->form_validation->set_rules('organization[]', "Organization", "trim|xss_clean|max_length[50]"); 
$this->form_validation->set_rules('department[]', "Department", "trim|xss_clean|max_length[50]"); 
$this->form_validation->set_rules('positions[]', "Position", "trim|xss_clean|max_length[40]"); 
$this->form_validation->set_rules('duration[]',"Duration", "trim|xss_clean|numeric"); 

यह मेरे प्रपत्र सबमिट यह के रूप में अनिवार्य है जो यह नहीं है अवधि लेता है के रूप में नहीं देता।

मैं इसे कैसे हल करूं?

कोई मदद/सुझाव स्वागत है। धन्यवाद।

+0

शायद तुम नहीं करना चाहिए इस प्रकार मेरी त्रुटियों दिखाया गया है? –

+0

@ सैमी मैंने अपना जवाब अपडेट कर लिया है, कृपया लिंक जोड़ा गया है, कृपया। किसी भी प्रतिक्रिया का स्वागत है। –

उत्तर

3

It doesn't let me submit the form यदि ऐसा है, तो यह एक बग की तरह लगता है।

अस्थायी रूप से, आप देख सकते हैं कि duration[] सरणी empty है या नहीं:

if (! empty($_POST['duration'])) { 
    $this->form_validation->set_rules('duration[]',"Duration", "trim|xss_clean|numeric"); 
} 

मैं अगर मैं मुख्य समाधान पाया मेरा उत्तर अपडेट करेंगे।


अद्यतन: यह एक बग के रूप में मैं उम्मीद है कि इस समस्या को हल होता है, मैं opened a PR CodeIgniter भंडार में,।

+0

क्षमा करें ... क्या आप इस प्रश्न पर एक नज़र डाल सकते हैं। [http://stackoverflow.com/questions/39941976/codeigniter-array-backend-validation ](httpoverflow.com/questions/39941976/codeigniter-array-backend-valalidation) – Shihas

6

तो जैसा कि @ हैशम कोलामी द्वारा सुझाए गए अनुसार मैंने अपने कोड में निम्नलिखित परिवर्तन किए और यह काम किया। टी `trim` जोड़ने (और` xss_clean` भी) `duration` सत्यापन करने के लिए;

$organization = $this->input->post('organization'); 
$department  = $this->input->post('department'); 
$positions  = $this->input->post('positions'); 
$duration  = $this->input->post('duration'); 

foreach($organization as $ind=>$val) 
{ 
    $org = $organization[$ind]; 
    $dept = $department[$ind]; 
    $pos = $positions[$ind]; 
    $dura = $duration[$ind]; 

    $this->form_validation->set_rules("organization[".$ind."]", "Organization", "trim|xss_clean|max_length[1]"); 
    $this->form_validation->set_rules("department[".$ind."]", "Department", "trim|xss_clean|max_length[50]"); 
    $this->form_validation->set_rules("positions[".$ind."]", "Position", "trim|xss_clean|max_length[40]"); 
    if(!empty($dura)) 
     $this->form_validation->set_rules("duration[".$ind."]", "Duration", "trim|xss_clean|integer"); 
} 

और के रूप में

for($i = 0; $i < count($organization); $i++) { 
    echo form_error("organization[".$i."]"); 
    echo form_error("department[".$i."]"); 
    echo form_error("positions[".$i."]"); 
    echo form_error("duration[".$i."]"); 
    } 
+0

क्षमा करें ... क्या आप कृपया इस सवाल पर एक नज़र डालें। [http://stackoverflow.com/questions/39941976/codeigniter-array-backend-validation ](httpoverflow.com/questions/39941976/codeigniter-array-backend-valalidation) – Shihas

+0

महान उत्तर, वास्तव में मदद करता है .. –

संबंधित मुद्दे