Aunque al principio la idea de usar V -> C, C -> M, M -> C parece buena, cualquier cambio en el formulario requiere un error con el controlador + modelo + vista. Eso debe evitarse para mantener la lógica de la aplicación simple. Aquí hay una extensión muy simple del marco que hace que sea realmente fácil manejar el procesamiento de formularios web, delegando la lógica de procesamiento de formularios en una clase separada y manteniendo la arquitectura MVC para manejar la lógica de la aplicación.
Para cada formulario que necesite procesar, cree una clase derivada de una clase genérica "webform" o la clase de modelo codeigniter. Agregue métodos como validate(), process(), display() a esta clase.
En el controlador, el código es así.
class User_controller
{
function login()
{
$form = new LoginForm(); // this is the class you would create
if ($form->validate())
{
$data = $this->user_model->getUserData($form->userid);
// form processing complete, use the main "user" model to fetch userdata for display,
// or redirect user to another page, update your session, anything you like
} else {
$form->display();
}
}
}
El método de visualización en la clase de formulario carga su propia vista y rellena los datos posteriores de la publicación como desee. Mediante el uso de lo anterior, hay pocas ventajas:
Usted no necesita cambiar su controlador principal si la pantalla forma o procesamiento necesita cambios.
Usted no necesita cambiar su modelo de usuario, ya sea
controlador permanece limpio y manejar la lógica principal sigue siendo la página
usuario Modelo limpia y sólo interactúa con la base de datos
El marco se puede actualizar para que los formularios web se puedan cargar usando
$ this-> loa d-> form ("inicio de sesión"); ......
Sin embargo, esa es solo una sugerencia que es útil para el equipo de codeigniter.