Programación avanzada en Internet

MaTI.Jonathan Giovanni Soto Muñoz

Laravel

¿Que es Laravel

Laravel es un framework de código abierto para el desarrollo de aplicaciones web en PHP 5 que posee una sintaxis simple, expresiva y elegante.

¿Por que usar Laravel?

Laravel facilita el desarrollo simplificando el trabajo con tareas comunes como la autenticación, el enrutamiendo, gestión sesiones, el almacenamiento en caché, etc

Ventajas de Laravel

  • Esta diseñado para desarrollar bajo el patrón MVC
  • Integra un sistema ORM de mapeado de datos relacional llamado Eloquent
  • Permite la gestión de bases de datos y la manipulación de tablas desde código
  • Utiliza un sistema de plantillas para las vistas llamado Blade, el cual hace uso de la cache para darle mayor velocidad.
  • Facilita la extensión de funcionalidad mediante paquetes o librerías externas
  • Incorpora un intérprete de línea de comando llamado Artisan

Modelo-Vista-Controlador

El modelo-vista-controlador o MVC es una arquitectura para desarrollo de software, caracterizada por separar el funcionamiento del software en tres partes fundamentales

  • Modelo: Es la parte del software que maneja la información del sitio web, como por ejemplo una base de datos
  • Vista: La vista es la parte visual del software, es todo aquello que puede ver el usuario
  • Controlador: El controlador es la parte que conecta la vista y el modelo, es la parte más lógica del software pues esta debe manejar las cosnultas de la base de datos y preparar sus datos para la representarlos en la vista

Herramientas necesarias para Laravel

XAMPP

XAMPP es un paquete de software libre, que consiste principalmente en el sistema de gestión de bases de datos MySQL, el servidor web Apache y los intérpretes para lenguajes de script PHP y Perl.

COMPOSER

Composer es un sistema de gestión de paquetes para programar en PHP el cual provee los formatos estándar necesarios para manejar dependencias y librerías de PHP

Estructura de un proyecto

Es importante saber que al implementar Laravel se generará una seria de carpetas, cada una encargada de una parte del código

App

Contiene el código principal de la aplicación

config

Contiene los archivos de configuración de la aplicación, como: base de datos, cache, correos, etc.

database

En esta carpeta se incluye todo sobre la definición de la base datos del proyecto

Public

Es la única carpeta pública. Todas las peticiones y solicitudes del sitio pasan por esta carpeta ya que contiene el archivo "index.php", que es el que inicia el proceso del framework.
En esta carpeta también se encuentran los archivos CSS, JavaScript, imagenes u otros archivos.

resources

Esta carpeta se compone de otras 3:

  • views: contiene las vistas del sitio
  • lang: En esta carpeta se guardan archivos PHP con los textos del sitio en distintos idiomas. Solo es necesaria en caso de implementar traducciones.
  • assets: Almacena las fuentes de los assets "less" o "sass" que se tendrían que compilar para generar las hojas de estilo públicas.

bootstrap

Incluye el código para procesar cada llamada a nuestro sitio. Normalmente no hay que modificar esta carpeta.

storage

En esta carpeta se almacena toda la información interna necesaria para la ejecución del sitio.

test

Esta carpeta se usa para las pruebas automatizadas.

vendor

En esta carpeta se alojan todas las librerías y dependencias que conforman el framework.

Ademas de la carpeta raíz hay dos ficheros relevanres

  • .env: Almacena los valores de configuración de la máquina actual.
  • composer.json: Composer utiliza este fichero para instalar Laravel.

Funcionaminto de Laravel

1. Todas las peticiones pasan primero por nuestro index en la carpeta public, el cual primero comprueba el fichero de rutas.
2. Se llama al método el controlador asignado a dicha ruta.
3. El controlador llama a la vista a la vista con los datos asociados, así la vista se prepara para mostrarse correctamente.

Rutas

las rutas del sitio deben definirse en el fichero "routes/web.php". Este es el punto central para la definición de rutas, de esta forma, cualquier ruta no definida aquí no será válida, lo que regresará un error 404.

Rutas básicas

Las rutas, ademas de definir la URL de la petición, también indican el método con el que se debe hacer dicha petición.

rutas tipo get


En el ejemplo, el código se lanzaría cuando se realize una petición a la raíz del sitio. Aún con esta ruta definida, si se hace una petición de otro tipo que no sea get, dará un error.

rutas tipo post


En este caso la sintaxis es igual, solo cambiando la palabra get por post. La ruta apuntaria a foo/bar es decir: http://www.dirección-de-tu-web.com/foo/bar

rutas put o delete


rutas match

Las rutas match permiten declarar rutas que funcionen para más de un tipo, es decir, si quisieramos usar tipo get y tipo post sería:

Usando un array con los tipos que consideremos necesarios.

any

Si queremos que se acepte cualquier petición HTTP podemos usar any:

Parámetros a las rutas

Las rutas también admiten parámetros, solo se necesita agregar el parámetros entre "{}".

En este caso en la ruta /user/{id} se producira un error.

Párametros opcionales

También se puede indicar que un párametro es opcional simplemente añadiendo el simbolo ? al final.
Incluso se permite dar un valor por defecto.

Validar los parámetros de una ruta

Laravel permite el uso de expresiones regualres para validar los parámetros que de una ruta.

Artisan

Laravel incluye una interfaz de linea de comandos llamado Artisan. Esta nos permite realizar distintas tareas necesarias en el proceso tanto de desarrollo como al despliegue del sitio.
Si necesitamos mayor información de algún comando podemos usar la palabra "help".

Listado de rutas

Para poder un listado de todas las rutas que se definieron en el fichero "routes.php" se utiliza el comando:

Esto nos mostrará una lista con el método, dirección, la acción y los filtros definidos de todas las rutas definidas.

Generación de código

Una de las novedades que llegaron con Laravel 5 es la generación de código con Artisan. Usando el comando "make".
Este comando nos permite generar componentes de Laravel como si fueran plantillas.


En este ejemplo se crea un nuevo controlador.

Vistas

Como ya se a explicado, las vistas son la forma de presentar los resultas del sistema al usuario.
Las vistas permiten al usuario interactuar con el sitio web.

Definir vistas

Las vistas se almacenan en la carpeta "resources/view". Estos contienen el código HTML del sitio web, mezclado con los assets (CSS,imágenes,scripts,etc) y código php.

Ejemplo de una vista:

Referenciar y deolver vistas

Teniendo ya una vista tenemos que asociarla con una ruta para poder mostrarla. Para esto se debe usar el fichero "routes.php" como ya se vió antes.


En este caso estamos definiendo que la vista "home" se devuelva con una petición get a la raíz del sitio.
El cambio más grande es el valor que regresa la función, la cuál genera la vista usando el método "view".

Esta función recibe como parámetros:

  • El nombre de la vista, que en este caso es "home"
  • El segundo parámetro es un array de datos que se pasa a la vista

Las vistas se pueden organizar en sub-carpetas dentro de la carpeta "resources/views".
En casos como estos para referenciar las vistas dentro de estas sub-carpetas utilizamos la notacion "dot". Por ejemplo, para la vista "resources/views/user/register.php" se cargaría de la siguiente manera:

Pasar datos a una vista

Como ya vimos, con el método "view" podemos enviar datos a una vista, este permite recibir una segundo parámetro, que es array asociativo. En este array se pueden añadir cualquier cantidad de variables que utilicemos en la vista.

En este caso la vista "profile" recibe el "id" del usuario a travéz de la ruta

Laravel ademas permite el uso del método "with" para indicar una a una las variables o los contenidos que queremos enviar a la vista: