2012-10-09 21 views
7

Duplicar posibles:
Codeigniter 2 forms on one page, validation_errors problemmúltiples validación de formularios conflicto CodeIgniter

tengo 2 formas en mi página. Necesito validarlos 1 a la vez, pero creo que hay un conflicto. Aquí echar un vistazo:

enter image description here

cuando presente cualquiera de la forma, tanto de ellos muestran el mismo mensaje de error

utilizo validation_errors() para mostrar los mensajes. ¿Cómo puedo validar el formulario 1 a la vez?

Aquí está el código

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

publique su código ... –

+2

'http: // stackoverflow.com/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", "primer nombre ","necesario"); \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 // mal \t \t} else { \t \t \t // correcta \t \t}} \t –

Respuesta

7

I jus encontré el problema. Mi solución es:

1.En primer lugar establecer el primer botón de enviar el nombre = 'update_info'

2.Secondly establece el segundo nombre del botón submit = 'change_password'

3.Last cambiar su 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 
    } 

Creo que esta es la manera más fácil de solucionar su problema.

Buena suerte.

+0

¡Gracias! :) ¡funciona a las mil maravillas! –

+0

Mi placer. :) – lijinma

2

Si tiene diferentes errores de validación para cada forma se puede comprobar la salida de validation_errors.

Por lo que puedo ver validation_errors solo le permite cambiar los delimitadores de errores y nada más. Sin embargo, puede intentar mostrar los errores individuales del formulario de esta manera: <?php echo form_error('username'); ?>

5

Puede tomar una entrada oculta para cada forma

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

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

En su controlador, puede establecer conjunto de reglas para cada 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; 

en su archivo de vista

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