2012-10-09 11 views
7

Eventuali duplicati:
Codeigniter 2 forms on one page, validation_errors problemmultipla validazione dei form codeigniter conflitto

Ho 2 forme nella mia pagina. Devo convalidarli 1 alla volta, ma penso che ci sia un conflitto. Qui dare un'occhiata:

enter image description here

quando presento una di forma, entrambi mostrano lo stesso messaggio di errore

Io uso validation_errors() per visualizzare i messaggi. Come posso convalidare il modulo 1 alla volta?

Ecco il codice

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

inserisci il tuo codice ... –

+2

'http: // stackoverflow.it/questions/5802729/codeigniter-2-forms-on-one-page-validation-errors-problem' –

+0

public function update_user_info() { \t \t $ this-> form_validation-> set_rules ("firstname", "Nome ","necessario"); \t \t $ this-> form_validation-> set_rules ("lastname", "Last Name", "required"); \t \t $ this-> form_validation-> set_rules ("middlename", "Middle name", "required"); \t \t if ($ this-> form_validation-> run() === false) { \t \t \t // sbagliato \t \t} else { \t \t \t // corretto \t \t}} \t –

risposta

7

I jus Ho incontrato il problema. La mia soluzione è:

1.First impostare il primo nome del pulsante submit = 'update_info'

2.Secondly impostare il secondo nome del pulsante submit = 'change_password'

3.Last cambiare la vostra 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 
    } 

Penso che questo sia il modo più semplice per risolvere il problema.

Buona fortuna.

+0

Grazie! :) Esso funziona magicamente! –

+0

Piacere mio. :) – lijinma

2

Se si dispone di errori di convalida diverse per ogni modulo è possibile controllare l'uscita dal validation_errors.

Per quanto posso vedere, validation_errors consente solo di modificare i delimitatori di errori e nient'altro. Tuttavia, si può provare che mostra errori di forma individuali in questo modo: <?php echo form_error('username'); ?>

5

Si può prendere un ingresso nascosto per ogni modulo

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

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

nel controller, è possibile impostare serie di regole per ogni forma

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

Ora nel file di visualizzazione

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