Tutorial de Silex: Un ejemplo de MVC

Silex es un micro framework de PHP basado en Symfony, permite simplificar y disminuir el tiempo de desarrollo de aplicaciones robustas y seguras. Las aplicaciones desarrolladas en Silex siguen el patrón de desarrollo MVC (Modelo-Vista-Controlador). En este articulo voy a mostrarte un ejemplo con el que puedes introducirte en el desarrollo de aplicaciones basadas en Silex

Instalación de Silex

Para instalar Silex necesitas hacer uso de Composer, si aun o lo tienes, puedes instalarlo desde este enlace, también vas a necesitar un servidor web con al menos PHP, Apache (o Nginx) y MySQL (u otra base de datos), si no tienes esto, puedes instalar WAMP, aquí hay un articulo que explica como hacerlo.

Ahora que ya tienes todos los requisitos, puedes abrir una ventana de comandos (Símbolo del Sistema si usas Windows ) y navegas hasta la ruta de tu servidor web por ejemplo “c:\wamp64\www” y ejecutas este comando:

composer create-project fabpot/silex-skeleton nombre_aplicacion “~2.0”

En el comando anterior solo tienes que cambiar “nombre_aplicacion” por el nombre de tu aplicación, esto creara una carpeta en el directorio en el que te encuentras, con ese nombre de aplicación y dentro de ella todo el código necesario para tu aplicación basada en Silex.

Ahora para probar solo tienes que abrir en tu navegador esta dirección (no olvides cambiar el nombre de la aplicación):

http://localhost/nombre_aplicacion/web/index_dev.php

Si todo esta bien, veras algo como esto

Primer programa de silex

Trabajando con rutas

Ahora vamos a agregar una ruta y un controlador, primero vamos a crear un archivo llamado productos.php en esta ruta: src/controladores/productos.php

Ahora debemos montar este controlador, esto lo hacemos en el archivo src/app.php, noten que este archivo ya existe, solo agregamos esta linea: $app->mount(‘/productos’, include ‘controladores/productos.php’);

Ahora si, ya tenemos nuestro primer controlador, para verlo podemos ingresar a estas dos rutas:

http://localhost/nombre_aplicacion/web/index_dev.php/productos/

http://localhost/nombre_aplicacion/web/index_dev.php/productos/2

Trabajando con modelos

Ahora vamos a trabajar la parte del modelo, esto se hace con una base de datos, en este caso será MySQL y la librería de Doctrine, sino sabes que es Doctrine, puedes obtener más información en este enlace.

Ahora crea una base de datos, con nombre silex y una tabla llamada productos con dos campos, como se ve en esta imagen:

Tabla productos

Ahora para trabajar con doctrine debemos instalar la librería corriendo este comando en una ventana de comandos y debemos estar en la ruta de la aplicación, por ejemplo c:\wamp64\www\nombre_aplicacion

composer require “doctrine/dbal:~2.2”

Ahora debemos registrar los datos de conexion en la base de datos, esto lo hacemos en el archivo src/app.php agregando este codigo

//Registrar la base de datos
$app->register(new Silex\Provider\DoctrineServiceProvider(), array(
‘db.options’ => array(
‘dbname’ => ‘silex’, //Base de datos
‘host’ => ‘localhost’, //Servidor en donde esta la base de datos
‘user’ => ‘root’, //Usuario de la base de datos
‘password’ => ”, //Clave
),
));

El archivo src/app.php quedará de esta forma:

Ahora vamos a modificar uno de los controladores, para que muestre la información, según la base de datos:

Ahora si probamos esta ruta, vamos a ver el nombre del producto que corresponde al id, que se envía en la ruta

Trabajando con plantillas (twig)

Muy bien ya tienes tu controlador y el modelo, ahora vamos a utilizar twig para mostrar la lista de productos. Si necesitas más información sobre twig, puedes consultar este enlace.

Primero vamos a crear un archivo de plantilla en esta ruta templates\productos\index.html.twig

En el código anterior en la linea 1, estamos diciendo que esta plantilla se hereda de la plantilla layout.html.twig, que ya viene definida en silex (está en la carpeta templates), luego en la linea 2, decimos que vamos a sobre escribir el bloque content (definido en la plantilla layout.html.twig) que se cierra en la ultima linea (13). Luego utilizamos un ciclo for para recorrer la variable productos que es un array, noten que cuando se coloca una variable de twig entre llaves dobles (linea 8), equivale a un echo o print de php

Ahora también tenemos que modificar el controlador para enviarle la información a la plantilla.

En el código anterior en la linea 14 estamos enviando la plantilla con el método render, este necesita dos parámetros, el primero es la ruta de la plantilla y el segundo es un array con los parámetros y valores que necesita la plantilla.

Ahora para probar los cambios podemos ingresar en esta ruta

http://localhost/nombre_aplicacion/web/index_dev.php/productos/

Conclusión

Silex es un framework bastante solido y permite desarrollar aplicaciones seguras para cualquier tamaño de empresa, y lo mejor es, que es mucho más fácil de aprender que Symfony.

Ahora ya tienes una idea de como se trabaja con Silex, si estas interesado en aprender más, puedes consultar la documentación oficial, pero si tienes un cerebro visual (como muchos) y aprendes mejor a través de videos, aquí hay un curso muy completo con las mejores practicas y muchos consejos valiosos, además por se un lector de este blog, he agregado un descuento especial en el enlace.

Si al probar esto tuviste algún problema, puedes descargar todo el código de este ejemplo, solo tienes que crear la base de datos y copiar esto en la carpeta www de tu wamp.



Ir a la barra de herramientas