2012-10-09 14 views
7

Mögliche Duplizieren:
Codeigniter 2 forms on one page, validation_errors problemmehrere Formularvalidierung codeigniter Konflikt

Ich habe 2 Formen in meiner Seite. Ich muss sie auf einmal validieren, aber ich denke, dass es einen Konflikt gibt. Hier nehmen Sie einen Blick:

enter image description here

, wenn ich entweder von der Form einreichen, beide zeigen die gleiche Fehlermeldung

Ich benutze validation_errors() die Nachrichten angezeigt werden soll. Wie kann ich das Formular 1 auf einmal validieren?

Hier ist der Code

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

poste deinen Code ... –

+2

'http: // stackoverflow.com/questions/5802729/codeigniter-2-forms-auf-einer-seite-validation-errors-problem' –

+0

öffentliche funktion update_user_info() { \t \t $ this-> form_validation-> set_rules ("Vorname", "Vorname ","erforderlich"); \t \t $ this-> form_validation-> set_rules ("Nachname", "Nachname", "erforderlich"); \t \t $ this-> form_validation-> set_rules ("zweiter Vorname", "zweiter Vorname", "erforderlich"); \t \t if ($ this-> form_validation-> run() === false) { \t \t \t // falsch \t \t} else { \t \t \t // richtig \t \t} \t} –

Antwort

7

I jus Das Problem ist aufgetreten. Meine Lösung ist:

1.First stellen Sie den ersten Button namen = submit 'update_info'

2.Secondly setzte das zweite Schaltfläche namen = 'change_password'

3.Last ändern Ihre update_user_info einreichen ().

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 
    } 

Ich denke, das ist der einfachste Weg, um Ihr Problem zu beheben.

Viel Glück.

+0

Danke! :) es wirkt wie ein Zauber! –

+0

Mein Vergnügen. :) – lijinma

2

Wenn Sie verschiedene Validierungsfehler haben für jeden Sie bilden die Ausgabe von validation_errors überprüfen können.

Soweit ich sehe validation_errors können Sie nur die Begrenzer der Fehler und nichts anderes zu ändern. Sie können jedoch versuchen, einzelne Formfehler zeigt, wie so: <?php echo form_error('username'); ?>

5

Sie können

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

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

In Ihrem Controller einen versteckten Eingang für jede Form annehmen, können Sie Reihe von Regeln für jede Form eingestellt

$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; 

Jetzt in Ihrer view-Datei

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