MVC-Modelo Vista Controlador


1.- Software y configuración


2.- El Modelo Vista Controlador (MVC)

Es un patrón clásico del diseño web. Está formado por tres niveles:

De la programación spaguetti al modelo MVC


3.- SILEX

Se trata de un micro framework (entornos de trabajo) creado en PHP y basado en Symfony2

Un framework

https://www.youtube.com/watch?v=tDwXZv_FhS0
http://aprendephp.es/curso-de-silex
http://librosweb.es/libro/silex/capitulo_2/instalacion.html

3.1.- Paso 1: descomprimir el zip de Silex bajo un directorio del servidor web con soporte php

Para los ejemplos, yo lo he descomprimido bajo /htdocs/mvc/sílex. De esta forma se crea toda la estructura de carpetas de Silex

El acceso a mi web se hará con la URL http://localhost/mvc/silex/web/

3.2.- Paso 2: crear un fichero de redirección. htdocs/mvc/silex/web/.htaccess

Este fichero tiene instrucciones para Apache para que siempre intente ejecutar el fichero index.phh. Su contenido será el siguiente:

OJO: ASEGURARSE QUE EL DIRECTORIO DE RewriteBase APUNTE AL INICIO DE NUESTRA APLICACION

RewriteEngine On
RewriteBase /mvc/silex/web
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]

3.3.- Paso 3: Inicializar la aplicacion wew. Solo se necesita modificar el fichero web/index.php

Básicamente se compone de muy poquitas tareas, de las que ya viene un ejemplo en el fichero index.php descomprimido

ENRUTAMIENTO

http://librosweb.es/libro/silex/capitulo_2/enrutamiento.html

Consiste en añadir una ruta al proyecto y definir su controlador (lo que se hace cuando se accede a esa ruta)

Primer ejemplo: crear dentro de web/index.php 2 controladores:

Segundo ejemplo: Añadir a lo anterior un nuevo controlador (http://localhost/mvc/sílex/web//blog) que muestre los títulos de una matriz que le es enviada por get

Rutas dinámicas

Son rutas que contienen un parámetro utilizado como datos. Por ejemplo, controlador que permite mostrar el contenido de un artículo individual del blog cuando se accede a la ruta /blogs/show/numero_del_articulo

 

3.4.- Paso 4: necesito más cosas. Instalador-Configuración de paquetes: COMPOSER

Composer es un gestor de paquetes (parecido a apt de Debian).

Para poder ejecutarlo en cualquier ventana de comandos en ms-dos, sin necesidad de poner variables de sistema, configuración de PATH, ... se instala el programa Composer-Setup de forma que la orden composer se ejecuta en cualquier ventana.

TRUCO: Para abrir una ventana en el directorio seleccionado en el explorador de carpetas May+Boton dcho ratón y elegir "abrir una ventana de comandos aqui"

 

3.5.- Paso 5: Uso de Vistas (Con V de MVC). Twig

Twig es un gestor de vistas y plantillas

Instalacion de twig.

Abrir una ventana CMD en el directorio raiz del proyecto y teclear (ver composer, punto 3.4)

composer require twig/twig

Este comando modifica el fichero composer.json, carga y actualiza el repositorio de twig

Uso de twig

Se crear una carpeta (por ejemplo, llamarla vistas) bajo la carpeta web del proyecto

Dentro de la carpeta recién creada, se ponen las vistas que se desean utilizar en el proyecto.

3.6.- Paso 6: acceso a bases de datos. DOCTRINE

Permite acceder a numerosas bases de datos

Instalacion de doctrine

Abrir una ventana de comandos sobre el directorio de la aplicación (May+Boton dcho)

composer require doctrine/dbal

Modifica composer.json, actualiza doctrine y sus dependencias

Tambien se puede hacer a pedal, modificando el fichero composer.json

{ "require": { "silex/silex": "~1.1", "doctrine/dbal": "^2.5", "twig/twig": "^1.24" }}

y luego actulizar el repositorio mediante la sentencia

composer update doctrine/dbal

Sentencias parecidas actualizan el paqueterio del proveedor que se especifique

Uso de Doctrine

Se adjunta el fichero index.php que instancia el repositorio de Doctrine y lee la tabla templa de la base de datos usuario de MySQL. Observar cómo se definen los parámetros de acceso a una base de datos MySQL y como la capa de controlador es totalmente transparente del Modelo de acceso a datos empleando el método fetchAll() para recoger un Array con los datos de la BD


4.- Proyecto completo. Mantenimiento completo (Altas-Bajas-Modificaciones-Listados) en una tabla usando vistas (Twig) y acceso a bases de datos (Doctrine).

Proyecto basado en el articulo de http://jhernandz.es/noticia/silex-doctrine-twig-i

Se va a realizar un proyecto que permita realizar el mantenimiento de una tabla.

4.1.- Creacion de los datos necesarios en MySQL

4.2.- Instalación y configuración de los repositorios Twig y Doctrine para usar vistas y acceso a bases de datos

Teclear en una ventana de comandos:

composer require twig/twig

composer require doctrine/dbal

4.3.- Creación de los ficheros del proyecto

 

Aqui puedes descargarte el fichero comprimido con los ficheros del proyecto. He movido index.php fuera de la carpeta web (por defecto) para simular un servidor en explotación e impedir que la gente "husmee" la estructura de carpetas del proyecto. Para reproducir este proyecto:

Aqui puedes ver "pantallazos" de mi aplicación

Listando
Insertando
Editando
Borrando