Lógica de validación de CodeIgniter

Estoy creando una pequeña aplicación que básicamente mostrará 3 formularios... el primero es opcional, el segundo no y el tercero no. Me gustaría que cada formulario sea una URL separada (controlador). Al leer la documentación de CodeIgniter form_validation, parece que el formulario solo puede enviarse a sí mismo para validarlo. Si ese es el caso, los formularios seguirían apareciendo en la misma página... él es básicamente lo que tengo... y comentó lo que me gustaría hacer...

class Index extends CI_Controller {

 function __construct()
    {
        parent::__construct();
    }

        function index()
        {
        //load front page that contains first form...
                $content['title'] = 'Home';
                $content['view'] = 'pages/index';
                $this->load->view('template/default',$content);

        }
        function step_two()
        {
           //recieve information from front page. validate form. If validation is 
           //successful continue to step_two(url) if it fails redirect 
           //to front page with error...

          $this->form_validation->set_rules('serial', 'Serial Number', 'required');

          if ($this->form_validation->run() == FALSE)
          {
           //return to front page...
          }else{
           //do necessary work and load step_two view   
          } 


        }

}

?> 

Este es un fragmento de mi idea. Pero lo que estoy notando es que no puede tener validación de formulario a menos que el formulario se envíe a sí mismo. ¿Algunas ideas? ¿Debo validar el formulario y luego redirigir a la nueva URL/función?

Gracias chicos...

preguntado el 03 de mayo de 12 a las 16:05

Redirigir en validación exitosa... -

1 Respuestas

así es como lo haces

Controlador -

public function step1()
{
        if ($this->form_validation->run() == FALSE)
        {
            $this->load->view('myform1');
        }
        else
        {
            //do something to post data
            redirect('/controller/step2');
        }
}


public function step2()
{
        if ($this->form_validation->run() == FALSE)
        {
            $this->load->view('myform2');
        }
        else
        {
            //do something to post data

            redirect('/controller/step3');
        }
}

así que la respuesta a su pregunta es sí, los mantiene en el mismo método y los redirige en una validación exitosa.

contestado el 03 de mayo de 12 a las 16:05

Entonces, si dijera ... Quería evitar que las personas accedan al paso 3 a menos que el formulario 2 haya sido validado con éxito, ¿establecería una variable de sesión después de la validación exitosa y la verificaría en la función del paso 3? - G.Thompson

Sí, la variable de sesión no es una mala idea. O depende de cómo se interrelacionen estos formularios; por ejemplo, si el paso 1 crea un nuevo registro de base de datos, quizás pueda hacer una verificación rápida antes de mostrar el formulario en el paso 2. Tigre

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.