2011-04-27 19 views
6

En uno de mis sitios web tengo 2 formularios en una página, tengo un problema, con validation_errors(); básicamente lo que está sucediendo, es para uno de los formularios que estoy buscando errores y si hay algún error, estoy haciendo un poco de estilo para que las etiquetas se vuelvan rojas, como la otra forma solo muestra errores usando echo validation_errors();. Cuando envío el formulario que no muestra errores, solo se muestran el estilo de error de los errores de validación en el formulario. ¿Cómo puedo detener esto?Codeigniter 2 formularios en una página, problema de validation_errors

Respuesta

23

Su pregunta es un poco difícil de leer, pero si he entendido bien - usted está teniendo problemas para validar 2 formularios separados de una controladora o con temas relacionados con errores de diferentes formas utilizando validation_errors() que imprime todos los errores que yo sepa:

Antes de ejecutar la validación, verifique la existencia de un campo oculto, un campo exclusivo del formulario, o puede verificar el valor del botón de envío en particular.

<form> 
<input type="hidden" name="form1" value="whatever"> 
<input name="form1_email" /> 
<input type="submit" value="Submit Form 1" /> 
</form> 

continuación, puede utilizar cualquiera de estos métodos para comprobar qué forma se presentó (En este ejemplo se comprueba si se presentó "Form1"):

<?php 
// Choose one: 
if ($this->input->post('form1')): // check the hidden input 
if ($this->input->post('form1_email')): // OR check a unique value 
if ($this->input->post('submit') == 'Submit Form 1'): // OR check the submit button value 

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

     // process form 

    else: 
      // Create a variable with errors assigned to form 1 
      // Make sure to pass this to your view 
      $data['form1_errors'] = validation_errors(); 
    endif; 

endif; 
// Do same for form 2 

Luego, en su opinión, en lugar de utilizar validation_errors() se usaría:

if (isset($form1_errors)) echo $form1_errors; // Print only form1's errors 

Si esto no ayuda, hágamelo saber y aclare su pregunta publicando su código.

+1

+1, Gran respuesta. Simple y elegante. – ajacian81

+0

Gracias Soy nuevo en codeigniter esto me ayudó :) – Sam

0

Lo que hice fue dividir ambas formas. La vista sería como

<?php echo validation_errors(); ?> 
    <?php echo form_open('form1'); ?> 
    <form id="form1" action="some_action"> 
    //Inputs 
    </form> 
    <?php echo form_open('form2'); ?> 
    <form id="form2" action="other_action"> 
    //Inputs 
    </form> 

Ahora, en el controlador puede tener dos funciones diferentes para cada validación:

//Controller 
    function some_action(){ 
    //validate form and code 
    } 

    function other_action(){ 
    //validate form2 and code 
    } 

Ahora, todos los mensajes de validación aparecerán en el mismo lugar, pero sólo mostrará el mensajes de cada forma. Espero que ayude

Cuestiones relacionadas