Marco CodeIgniter MVC (controlador de vista de modelo) con ejemplo

¿Qué es MVC?

Estándares MVC para Modelo-Vista-Control. Es un patrón arquitectónico que divide la aplicación en tres componentes principales.

1. El modelo se ocupa de la lógica empresarial y las interacciones de bases de datos.

2. El controlador coordina las actividades entre el modelo y la vista.

3. View es responsable de la presentación de datos.

Las siguientes son algunas de las ventajas del patrón arquitectónico MVC

  • Acoplamiento flojo: los componentes existen y funcionan independientemente unos de otros.
  • Flexibilidad: se pueden realizar cambios fácilmente en componentes individuales
  • Mayor productividad: más de una persona puede trabajar en el proyecto al mismo tiempo. Los desarrolladores de front-end pueden trabajar en vistas y presentaciones, mientras que los desarrolladores de backend pueden centrarse en los modelos y, dado que el sistema está débilmente acoplado, funciona al final del día.

Modelo

El modelo es responsable de interactuar con las fuentes de datos. Suele ser una base de datos, pero también puede ser un servicio que proporciona los datos solicitados. También es una práctica común que la lógica empresarial esté contenida en los modelos y no en el controlador. Esta práctica suele denominarse controlador flaco modelo gordo.

El modelo generalmente escribe datos en la base de datos, 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 el registro activo, para facilitar la interacción con la base de datos.

Por ejemplo, CodeIgniter usa una biblioteca incorporada Active Record para ayudar a los modelos, mientras que otros marcos como Laravel usan Eloquent Object Relational Mapper (ORM) que ayuda al 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 comerciales. Digamos que el controlador recibe una solicitud para registrar un usuario en la base de datos.

El controlador puede realizar una validación de datos sobre lo que se ha enviado para garantizar que se hayan enviado todos los parámetros necesarios. Si falta algo, el usuario es redirigido a la página de registro y se muestra el mensaje de error correspondiente. El controlador también puede solicitar al modelo que realice una validación adicional comprobando si la dirección de correo electrónico enviada ya existe. Si se cumplen todas las reglas de validación, el controlador envía los datos al modelo para que los procese 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, JavaGuiónLas vistas contienen un código de programación mínimo. El código contenido en las vistas se utiliza generalmente para recorrer colecciones de datos recibidos como parámetros del modelo o la función auxiliar para limpiar datos o crear enlaces para editar los registros. La mayoría de las aplicaciones web modernas suelen utilizar motores de plantillas que definen su propia sintaxis, que es más parecida a un pseudocódigo y puede ser fácilmente entendida por los diseñadores. Al trabajar con CodeIgniter, es una práctica común utilizar etiquetas PHP cortas y estructuras de control. Para mostrar algo en CodeIgniter, se puede utilizar el siguiente código

<?=$title?>

Opuesto a

<?php
echo $title;
?>

Las estructuras de control generalmente se escriben de la siguiente manera

<?php foreach ($customers as $customer): ?>
<li>
<p><?=$customer->first_name?><p>
</li>
<?php endforeach; ?>

Como puede ver en el ejemplo anterior, la vista utilizará una combinación de PHP y HTML en lugar de encerrarlo todo en código PHP puro.

¿Cómo funcionan los marcos MVC?

La siguiente imagen muestra el funcionamiento del marco MVC

Los marcos MVC funcionan

Un controlador recibe la solicitud del usuario, interactúa con el modelo de base de datos si es necesario y luego devuelve el resultado al navegador en forma de código HTML que el navegador interpreta en un formato legible para humanos y muestra al usuario.

Controlador CodeIgniter

Analicemos ahora lo que sucedió cuando cargamos la URL anterior en el navegador web.

Abra el archivo Welcome.php controlador ubicado en la aplicación/controladores

Deberías poder 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Í,

  • definido('BASEPATH') O salir('No se permite acceso directo al script'); impide el acceso directo al controlador si la solicitud no llegó a través de index.php. esto es por motivos de seguridad.
  • class Welcome extiende CI_Controller {…} define la clase de controlador de bienvenida y extiende la clase principal CI_Controller
  • función pública index(){…} define el método de índice que responde a la URL http://localhost:3000
    • $this->cargar->view('mensaje_de bienvenida'); carga la vista mensaje de bienvenida que se encuentra en el directorio aplicación/vistas

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.
  • $datos[‘cliente’] = $this->customers_model->get_customer(3); llama al método get_customer de customer_model y pasa el parámetro 3. En este ejemplo hemos codificado el valor, pero en aplicaciones de la vida real este sería un parámetro del URI.
  • $this->cargar->view('mensaje_de bienvenida',$datos); carga la vista de mensaje de bienvenida y pasa la variable $data a la vista

Modelo CodeIgniter

Ahora creemos la vista a la que hicimos referencia en el código anterior. Para simplificar, nuestro modelo no interactuará con el base de datos pero devolverá un registro de cliente estático. Trabajaremos con bases de datos en los próximos tutoriales.

Cree un archivo Customers_model.php en aplicación/modelos

Añade 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.
  • La función pública get_customer($id) {…} define el método de obtención de cliente en función de una identificación de cliente.
  • $data[…] define los valores estáticos de nuestro cliente ficticio. Esta debería ser una fila devuelta desde la base de datos.
  • devolver $datos; devuelve los datos del cliente.

Es decir, para nuestro modelo. Modifiquemos ahora la vista mensaje_bienvenida

Abra bienvenido_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

Cargue la siguiente URL en el navegador web

http://localhost:3000/

Debería poder ver la tarjeta de cliente como se muestra en la imagen a continuación.

Modelo CodeIgniter

Resum

  • MVC es un patrón arquitectónico que divide la aplicación en tres componentes principales
  • El modelo es responsable de interactuar con las fuentes de datos.
  • El controlador escucha las solicitudes entrantes de recursos de los usuarios.
  • En las aplicaciones web, las vistas suelen contener HTML, CSS y, opcionalmente, JavaGuión
  • Un controlador recibe la solicitud del usuario, interactúa con el modelo de base de datos si es necesario y luego devuelve el resultado al navegador en forma de código HTML.