2012-10-09 13 views
7

संभव डुप्लिकेट:
Codeigniter 2 forms on one page, validation_errors problemकई फ़ॉर्म सत्यापन CodeIgniter संघर्ष

मैं अपने पृष्ठ में 2 रूपों की है। मुझे एक समय में उन्हें 1 सत्यापित करने की आवश्यकता है, लेकिन मुझे लगता है कि एक संघर्ष है। यहाँ एक नज़र रखना:

enter image description here

जब मैं प्रपत्र के दोनों सबमिट करते हैं, उन दोनों को एक ही त्रुटि संदेश

दिखाने मैं validation_errors() का उपयोग संदेशों को प्रदर्शित करने। मैं एक समय में फॉर्म 1 को कैसे सत्यापित कर सकता हूं? आप अलग अलग मान्यता त्रुटि है, तो प्रत्येक फार्म के लिए आप validation_errors से उत्पादन की जांच कर सकते

यहाँ कोड

public function update_user_info(){ 
    $this->form_validation->set_rules("firstname","First Name","required");  
    $this->form_validation->set_rules("lastname","Last Name","required"); 
    $this->form_validation->set_rules("middlename","Middle Name","required"); 
    if($this->form_validation->run()===false){ 
     //wrong 
    } 
    else { //correct } 
} 
+0

अपना कोड पोस्ट करें ... –

+2

'http: // stackoverflow।कॉम/प्रश्न/580272 9/कोडिग्निटर-2-फॉर्म-ऑन-वन-पेज-सत्यापन-त्रुटियों-समस्या ' –

+0

सार्वजनिक फ़ंक्शन update_user_info() { \t $$ यह-> form_validation-> set_rules ("firstname", "पहला नाम "" आवश्यक "); \t \t $ यह-> form_validation-> set_rules ("lastname", "अंतिम नाम", "आवश्यक"); \t \t $ यह-> form_validation-> set_rules ("middlename", "मध्य नाम", "आवश्यक"); \t \t ($ this-> form_validation-> रन() === गलत) { \t \t \t // गलत \t \t} else { \t \t \t // सही \t \t} \t} –

उत्तर

7

मैं जूस इस मुद्दे का सामना नहीं किया। मेरे समाधान है:

1.First सेट पहला बटन नाम सबमिट = 'update_info'

2.Secondly दूसरा बटन name = 'change_password' प्रस्तुत

3.Last अपने update_user_info बदल सेट ()।

public function update_user_info(){ 
    if (isset ($_POST['update_info'])) { 
     $this->form_validation->set_rules("firstname","First Name","required");  
     $this->form_validation->set_rules("lastname","Last Name","required"); 
     $this->form_validation->set_rules("middlename","Middle Name","required"); 
     if($this->form_validation->run()===false){ 
      //wrong 
     } 
     else { //correct }    
    } 
    else if (isset ($_POST['change_password'])){ 
     form_validation of your change password 
    } 

मुझे लगता है कि यह आपकी समस्या को ठीक करने का सबसे आसान तरीका है।

शुभकामनाएं।

+0

धन्यवाद! :) यह एक जादू की तरह काम करता है! –

+0

मेरी खुशी। :) – lijinma

2

है।

जहाँ तक मैं देख सकता हूं validation_errors केवल आपको त्रुटियों के डिलीमीटर बदलने और कुछ भी नहीं करने की अनुमति देता है। आप प्रत्येक प्रपत्र

First Form: 
<input type="hidden" name="form" value="form1" /> 

Second Form: 
<input type="hidden" name="form" value="form2" /> 

अपने नियंत्रक में के लिए एक छिपे हुए इनपुट ले जा सकते हैं <?php echo form_error('username'); ?>

5

, आप प्रत्येक प्रपत्र

$config['form1'] = array(
       array(
        'field' => 'username', 
        'label' => 'Username', 
        'rules' => 'required' 
       ), 
       array(
        'field' => 'password', 
        'label' => 'Password', 
        'rules' => 'required' 
       ), 
      ); 

$config['form2'] = array(
       array(
        'field' => 'email', 
        'label' => 'Email', 
        'rules' => 'required' 
       ), 
      ); 

Now check which hidden field posted 

$form = $this->input->post('form') 


Now you can set rules as below 

$this->form_validation->set_rules($config[$form]); 

if ($this->form_validation->run()): 

    // process form 

else: 
     $data[$form.'_errors'] = validation_errors(); 
endif; 
के लिए नियमों की सरणी सेट कर सकते हैं: लेकिन, आप तो जैसे व्यक्तिगत रूप त्रुटियों दिखा कोशिश कर सकते हैं आपके विचार फ़ाइल में अब

if (isset($form1_errors)) echo $form1_errors; 
if (isset($form2_errors)) echo $form2_errors;