Home Programación Joomla MVC o como enseñar a un león salvaje a dar la patita

PostHeaderIcon MVC o como enseñar a un león salvaje a dar la patita

Usar puntuación: / 2
MaloBueno 

Para entender el mecanismo de desarrollo de componentes en Joomla, obviamente, lo primero, es necesario entender el funcionamiento de Joomla. Joomla funciona bajo el paradigma Modelo-Vista-Controlador que si bien no es un modelo exclusivo de Joomla (muchísimas formas de desarrollo se basan en este paradigma) es necesario conocer para entender el funcionamiento de Joomla y consecuentemente el desarrollo de componentes y módulos. No es el objetivo de este post explicar detenidamente el modelo vista controlador pero sí al menos definirlo bien para el caso de Joomla que es el que nos ocupa.

Pero ¿qué es el modelo vista controlador?

Se trata de un modelo de arquitectura software, basado en la separación física entre los datos, la lógica de negocios y la forma en que aquellos son presentados al usuario final, y por supuesto, la forma en que estos tres conceptos se comunican. Con esta definición separamos realmente en dos partes el desarrollo: por un lado todo lo que tiene que ver con la programación propiamente dicha, acceso a datos y algoritmos para su transformación; por el otro lado tenemos la forma en que presentamos el resultado de nuestras operaciones y nuestros datos en pantalla.

Así visto, el modelo hace referencia a los datos, a su selección, creación, eliminación, manipulación y cualquier otra operación que se realice con ellos. Joomla guarda los datos en la base de datos MySQL por lo que la única dificultad que pueda tener esta parte se basa en el conocimiento de MySQL. Además incluirá todas las reglas de validación de datos de MySql así como la lógica interna de la aplicación. Esto es lo que el ordenador conoce.

Junto a él, en la parte más "desarrolladora" nos encontramos con el controlador que hace referencia a la lógica del negocio. Este concepto de "lógica de negocios" particularmente me parece muy desafortunado. Es una herencia del concepto en inglés, una traducción literal de "bussines logic". Es la parte del componente Joomla (del programa en general) que se encarga de las operaciones que hay que realizar con los datos, tanto con aquellos que se encuentran ya en la base de datos, como con aquellos que el usuario de la aplicación o página proporciona para su procesamiento llevando el control de flujo. Por decirlo de alguna manera, el controlador es el cerebro del componente. Cada petición que hace el usuario de la página es procesada por el controlador general, pudiendo gestionarla él mismo o dirigiéndola a otros controladores usando POST o GET. Joomla es un sistema diseñado en PHP así que este es el lenguaje que operará con los datos, incluyendo toda la parte de la base de datos que no es propia de la base de datos, tales como la conexión a la misma, las operaciones de ejecución de sentencias MySQL en PHP, etc. Por tanto el controlador contendrá la clase PHP que gestionará nuestro componente. Esta parte es lo que el ordenador hace con los datos que conoce. Es el paso intermedio entre la vista y el modelo.

Finalmente la vista es la forma en que el usuario recibe la información, procesada o no, después de pasar por operaciones o no... Aquí vale todo. Lo habitual es mostrar los datos en html, pero es importante también las posiciones que marca el css, los códigos php que puedan interactuar con el html, salidas XML, pdf... Aquí es donde se muestran los datos.

¿Cómo se comunican entre ellos?

  1. El usuario, conectado al portal web, ya sea por el front end o por el back end, al cargar la página, carga directamente el controlador, que decidirá entre llamar a la vista o al modelo.
  2. Al ser la primera vez que carga la página llamará a la vista. En esa vista podrá elegir qué hacer, bien a través de algún botón, bien a través de una entrada de menú. Si se fuera a trabajar con datos el controlador llamaría al modelo.
  3. Si el controlador llamó al modelo, puede ocurrir que sea o bien para cambiar la base de datos (insert, delete...) o bien para extraer información de ella (select). En cualquier caso el modelo devolverá datos al controlador, aunque sea simplemente la correctitud de la inserción.
  4. El controlador devolverá esos datos, procesados o no, a la vista para que genere el documento html (o pdf, o xml...). La vista a su vez podrá llamar al modelo si necesita consultar algún tipo de dato.
  5. Este documento será mostrado finalmente al usuario.

Fácil, ¿verdad?. Veamos un ejemplo bien simple para entenderlo mejor

Cualquiera que alguna vez haya trabajado con Joomla, conocerá uno de los componentes básicos que aporta que es su principal fuente de uso: los artículos. En realidad el componente que gestiona los artículos se componen de dos partes básicamente (probablemente esta afirmación simplifica mucho el componente, pero para nuestro objetivo bastará): Por un lado la escritura de artículos y por otro la lectura.

La escritura de artículos puede hacerse desde el back end o desde el front end (no vamos a entrar a ver la cuestión de los usuarios que pueden escribir, ni las diferencias entre uno y otro: que cada uno elija el método más común que emplea). Pero sea por donde fuere el proceso es el mismo a la hora de entenderlo dentro del MVC. La interfaz con la que se trabaja es sencilla y no difiere mucho de la de cualquier editor de texto: Una zona para escribir el título, el alias (que se pone automáticamente), una zona donde especificar categoría y sección, publicación, primera página y el cuerpo del artículo. Eso que tiene delante es una vista generada por el controlador. Esa vista además ha necesitado del controlador al cargarse para generar un menú desplegabla con todas las secciones y categorías existentes. Dicha información (categorías y secciones) han sido obtenidas del modelo y mostradas por la vista.

Una vez rellanados todos los campos incluyendo el cuerpo del artículo (vista) se pulsa en el botón guardar (vista también). Esa pulsación genera una llamada a una función (controlador) que realizará, entre otras cosas los dos pasos siguientes: Por un lado generará el alias del artículo (probablemente sustituyendo los espacios en blanco por guiones (-)). Esto es tarea exclusiva del controlador para lo que no necesita a nadie más. Por otro lado la inserción del artículo en la base de datos MySQL de Joomla a través de las instrucciones PHP correspondientes (controlador) pero usando obviamente las instrucciones MySQL necesarias (INSERT INTO...). Ésto le corresponde al modelo. Ese artículo ya podrá ser leído.

La lectura de un artículo sigue un proceso muy parecido: Al pulsar para leer un artículo (bien en el título, bien en un menú, bien en el enlace "leer más"... pero siempre en la vista generada por el controlador) se llama a una función del controlador que ejecuta la carga del artículo. El controlador buscará el artículo en la base de datos (modelo), lo cargará (controlador) y lo mostrará (vista).

 

Escribir un comentario


Código de seguridad
Refescar

PostHeaderIcon Más Comentado

PostHeaderIcon Últimos Comentarios

mod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_counter
mod_vvisit_counterHoy495
mod_vvisit_counterAyer950
mod_vvisit_counterEsta semana1445
mod_vvisit_counterLa semana pasada8055
mod_vvisit_counterEste mes23210
mod_vvisit_counterEl mes pasado31024
mod_vvisit_counterTodos los días1571788

We have: 46 guests online
Hoy es: Abr 24, 2018