CodeEjemplo del framework Igniter MVC (Modelo-Vista-Controlador)
โก Resumen inteligente
CodeEl framework Igniter MVC divide una aplicaciรณn en Modelo, Vista y Controlador. El modelo gestiona los datos y la lรณgica de negocio, el controlador coordina las solicitudes y la vista presenta el resultado, lo que proporciona un acoplamiento flexible, mayor flexibilidad y una mayor productividad para el desarrollador.

ยฟQuรฉ es MVC?
MVC significa Modelo-Vista-Controlador. Es un patrรณn arquitectรณnico que divide la aplicaciรณn en tres componentes principales:
- El modelo se ocupa de la lรณgica de negocio y las interacciones con la base de datos.
- El controlador coordina las actividades entre el modelo y la vista.
- View es responsable de la presentaciรณn de los datos.
A continuaciรณn se presentan algunas de las ventajas del patrรณn arquitectรณnico MVC:
- Acoplamiento flexible: los componentes existen y funcionan independientemente unos de otros.
- Flexibilidad: puedes realizar cambios fรกcilmente en componentes individuales.
- Mayor productividad: varias personas pueden trabajar en el proyecto simultรกneamente. Los desarrolladores front-end pueden trabajar en las vistas y la presentaciรณn, mientras que los desarrolladores back-end se centran en los modelos, y gracias a la baja interconexiรณn del sistema, todo funciona en conjunto.
Modelo
El modelo se encarga de interactuar con las fuentes de datos. Generalmente se trata de una base de datos, pero tambiรฉn puede ser un servicio que proporciona los datos solicitados. Es comรบn mantener la lรณgica de negocio en los modelos en lugar de en el controlador. Esta prรกctica se conoce como ยซmodelo robusto, controlador ligeroยป.
El modelo generalmente escribe datos en la base de datos y proporciona un mecanismo para editar, actualizar y eliminar datos. En una aplicaciรณn web moderna, los modelos utilizan patrones de diseรฑo de acceso a datos como Active Record para facilitar la interacciรณn con la base de datos.
Por ejemplo, CodeIgniter utiliza una biblioteca Active Record integrada para ayudar a los modelos, mientras que otros frameworks como Laravel utilizan el mapeador objeto-relacional (ORM) Eloquent para el acceso a los datos.
Control
El controlador escucha las solicitudes entrantes de recursos de los usuarios. Actรบa como intermediario entre el modelo y la vista, y en ocasiones tambiรฉn implementa algunas reglas de negocio. Supongamos que el controlador recibe una solicitud para registrar un usuario en la base de datos.
El controlador puede realizar una validaciรณn de los datos enviados para asegurarse de que estรฉn presentes todos los parรกmetros requeridos. Si falta alguno, el usuario es redirigido a la pรกgina de registro con el mensaje de error correspondiente. El controlador tambiรฉn puede solicitar al modelo que realice validaciones adicionales, como comprobar si la direcciรณn de correo electrรณnico enviada ya existe. Si todas las reglas de validaciรณn se cumplen, el controlador envรญa los datos al modelo para su procesamiento y espera la respuesta.
Una vez que el modelo ha procesado la informaciรณn y ha devuelto una respuesta positiva, el controlador carga la vista adecuada y pasa los datos devueltos por el modelo como parรกmetro.
Ver
La vista trata con los datos presentados al usuario final. En las aplicaciones web, las vistas suelen contener HTML, CSS y, opcionalmente, JavaScriptLas vistas contienen un cรณdigo de programaciรณn mรญnimo, generalmente solo lo suficiente para recorrer colecciones de datos recibidas del modelo, o una funciรณn auxiliar para limpiar datos o crear enlaces de ediciรณn. La mayorรญa de las aplicaciones web modernas utilizan motores de plantillas con su propia sintaxis similar a pseudocรณdigo que los diseรฑadores pueden entender. Al trabajar con CodeEn Igniter, es prรกctica comรบn usar etiquetas PHP cortas y estructuras de control. Para mostrar algo en CodeIgniter, podrรญas usar el siguiente cรณdigo:
<?=$title?>
En contraposiciรณn a:
<?php
echo $title;
?>
Las estructuras de control se suelen escribir de la siguiente manera:
<?php foreach ($customers as $customer): ?> <li> <p><?=$customer->first_name?></p> </li> <?php endforeach; ?>
Como puede verse en el ejemplo anterior, la vista utiliza una combinaciรณn de PHP y HTML en lugar de encerrarlo todo en cรณdigo PHP puro.
Cรณmo funcionan los frameworks MVC
La siguiente imagen muestra cรณmo funciona el marco MVC.
Un controlador recibe la solicitud del usuario, interactรบa con el modelo de base de datos si es necesario y, a continuaciรณn, devuelve el resultado al navegador en forma de cรณdigo HTML, que el navegador interpreta en un formato legible para el usuario y lo muestra.
CodeControlador de encendido
Ahora vamos a analizar lo que sucediรณ cuando cargamos el URL En el navegador web, abre el archivo Welcome.php controller ubicado en application/controllers. Deberรญas ver el siguiente cรณdigo:
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Welcome extends CI_Controller { public function index() { $this->load->view('welcome_message'); } }
Aquรญ:
- defined('BASEPATH') OR exit('No direct script access allowed'); impide el acceso directo al controlador si la solicitud no proviene de index.php. Esto es por motivos de seguridad.
- La clase Welcome extiende CI_Controller {โฆ} define la clase controladora Welcome y extiende la clase padre CI_Controller.
- public function index(){โฆ} define el mรฉtodo index que responde a la URL
http://localhost:3000. - $this->load->view('welcome_message'); carga la vista welcome_message ubicada en el directorio application/views.
Ahora actualizaremos el mรฉtodo de รญndice de la siguiente manera:
public function index()
{
$this->load->model('customers_model');
$data['customer'] = $this->customers_model->get_customer(3);
$this->load->view('welcome_message',$data);
}
Aquรญ:
- $this->cargar->model('modelo_clientes'); carga el modelo de clientes.
- $data['customer'] = $this->customers_model->get_customer(3); llama al mรฉtodo get_customer de customers_model y le pasa el parรกmetro 3. En este ejemplo hemos codificado el valor, pero en aplicaciones reales este serรญa un parรกmetro de la URI.
- $this->load->view('welcome_message',$data); carga la vista welcome_message y le pasa la variable $data.
CodeModelo de encendido
Ahora vamos a crear el modelo al que se hace referencia en el cรณdigo anterior. Para simplificar, nuestro modelo no interactuarรก con el base de datos de CRISPR Medicine News pero devolverรก un registro de cliente estรกtico. Trabajaremos con bases de datos en los prรณximos tutoriales. Crea un archivo Customers_model.php en application/models y agrega el siguiente cรณdigo:
<?php class Customers_model extends CI_Model { public function get_customer($id) { $data['id'] = 3; $data['first_name'] = 'John'; $data['last_name'] = 'Doe'; $data['address'] = 'Kingstone'; return $data; } }
Aquรญ:
- class Customers_model extends CI_Model {โฆ} define el modelo Customers_model que extiende CI_Model.
- public function get_customer($id) {โฆ} define el mรฉtodo get_customer basado en un ID de cliente.
- $data[โฆ] define los valores estรกticos de nuestro cliente ficticio. Debe ser una fila devuelta por la base de datos.
- devolver $datos; devuelve los datos del cliente.
Eso es todo por nuestro modelo. Ahora vamos a modificar la vista welcome_message. Abra welcome_message.php ubicado en:
application/views/welcome_message.php
Reemplace el cรณdigo con el siguiente:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>CodeIgniter MVC Basics</title> </head> <body> <h1>Customer Details Card</h1> <p>Customer ID : <strong><?=$customer['id']?></strong></p> <p>First Name : <strong><?=$customer['first_name']?></strong></p> <p>Last Name : <strong><?=$customer['last_name']?></strong></p> <p>Address : <strong><?=$customer['address']?></strong></p> </body> </html>
Guarda los cambios y carga lo siguiente. URL en el navegador web: http://localhost:3000/Deberรญa ver la tarjeta del cliente tal como se muestra en la imagen a continuaciรณn.


