3. Pleased to meet you, Laravel
Meetups
Software libre bajo licencia MIT, desarrollado por Taylor Otwell
Versión actual 5.2
Basado en Composer
Especificaciones PSR-2 y PSR-4
Utiliza muchos componentes externos, especialmente de Symfony
ORM: Eloquent
Blade como sistema de procesamiento de plantillas
Middlewares!
4. Laravel - The PHP Framework for Web Artisians
Meetups
PHP >= 5.5.9
OpenSSL PHP Extension
PDO PHP Extension
Mbstring PHP Extension
Tokenizer PHP Extension
ZIP PHP Extension
XML PHP Extension
5. Instalando Laravel y creando el primer proyecto
Meetups
Composer instalado y funcionado correctamente.
Instalamos Laravel globalmente:
composer global require "laravel/installer"
Comprobar que esté disponible la ruta a los bin de composer en nuestro PATH:
~/.composer/vendor/bin
Para crear un nuevo proyecto laravel:
laravel new phpvigo05
El instalador creará la carpeta phpvigo05 en la ruta dónde se ejecutó el comando.
Posteriormente, habrá que ajustar el DocumentRoot del VirtualHost para nuestro Apache
9. ¡¡Laravel ready!! Contenido de nuestro proyecto
Meetups
app: Zona destinada a nuestro código de aplicación. En su interior se encontrarán nuestros
modelos, controladores, middlewares, etc.
artisan: Laravel CLI para crear los modelos, migrations, seeders, etc.
config: La configuración de la aplicación. Debe contener los valores de producción
database: La definición de tablas, relaciones, actualizaciones y alimentación inicial
.env: La configuración para tu entorno de desarrollo
public: El contenido web raíz. Sólo tiene favicon, htaccess, index, robots.txt y web.config
resources: Plantillas y cadenas de idioma
storage: Almacenamiento de archivos.
vendor: Las dependencias del proyecto (Laravel actúa como dependencia)
14. Keep Calm: Fix the permissions
Meetups
Laravel tiene que poder escribir en el directorio storage y en todo su contenido
chmod -R 777 storage
… listos para probar de nuevo!
16. Configurando conexión DB en entorno de desarrollo
Meetups
Tenemos un MySQL con una base de datos phpvigo05 y el usuario phpvigo con contraseña
4GFd5l$dkae343aAFIeja32!kjdl
Debemos editar el fichero .env (el database.php de config tendrá los valores de producción)
17. Laravel y su ORM: Eloquent
Meetups
https://laravel.com/docs/5.2/eloquent
Abstracción total de la base de datos.
Tú defines la estructura de los modelos y sus relaciones: Eloquent crea las tablas por tí.
Permite relaciones 1:1 - 1:n - n:m
Permite el Soft Delete
Con artisan se genera la estructura base de la clase del modelo:
php artisan make:model Model --migration
Una vez definido el modelo y establecido su migration, lo aplicamos vía artisan:
php artisan migrate
18. Laravel y su ORM: Eloquent
Meetups
Se generan los ficheros:
app/Author.php - Modelo
database/migrations/2016_06_06_192257_create_authors_table.php - Schema
La clase creada CreateAuthorsTable tiene dos métodos: up y down
El método up se ejecuta al lanzar el migrate.
El método down se ejecuta al realizar un rollback.
Editamos CreateAuthorsTable para definir su estructura.
19. Laravel y su ORM: Eloquent
Meetups
authors como el Schema a crear.
id como como auto incremental y llave.
name como string de 50
surname como string de 255
photo como string 255
bio como text
birthdate como date
slug como string de 255 y llave única.
se incorpora automáticamente en formato timestamps la
fecha de creación y última modificación.
Se activan los softDeletes
20. Laravel y su ORM: Eloquent
Meetups
Al lanzar php artisan migrate se crean las tablas de users, password_resets y authors
Repetimos el make:model para crear un nuevo modelo llamado Book creado los ficheros:
app/Book.php - Modelo
database/migrations/2016_06_06_192747_create_books_table.php - Schema
Editamos CreateBooksTable para definir su estructura.
21. Laravel y su ORM: Eloquent
Meetups
books como el Schema a crear.
id como como auto incremental y llave.
author_id como integer unsigned y nullable.
title como string de 255
poster como string 255
extract como text
slug como string de 255 y llave única.
se incorpora automáticamente en formato timestamps la fecha de creación
y última modificación.
Se activan los softDeletes.
Se establece una clave foránea que relaciona el campo author_id con el id de
la tabla de authors, indicando que el campo author_id pasará a ser nulo
cuando se elimine el autor relacionado.
26. Laravel y su ORM: Eloquent
Meetups
Los migrate lanzados vía artisan pueden deshacerse utilizando la opción de rollback.
Para saber qué debe deshacer, consulta la tabla migrations.
Realmente no hace un rollback, sino que ejecuta los métodos down correspondientes.
30. Activando el sistema de usuarios o Auth
Meetups
Laravel viene preparado para proporcionar una funcionalidad básica de usuarios:
Registro de usuario
Login de usuario
Logout de usuario
Restricción de acceso a usuarios registrados.
Aunque venga preparado, es precioso indicar, explícitamente que lo active.
33. Las rutas en Laravel
Meetups
En app/Http/routes.php se definen las rutas que a app acepta y el código a ejecutarse.
Por cada route puede ejecutarse una función anónima o un método de un controlador.
Se puede definir un route como un patrón basado en expresiones regulares.
Se diferencia entre route de GET y route de POST pudiendo estar dos definiciones de ruta
capturando la misma URL, pero diferenciándose en si va por GET o POST.
Se pueden agrupar varias rutas dentro de un grupo de middlewares.
35. El middleware web y auth
Meetups
Un middleware especialmente importante es el conocido como “web”.
No se trata de un middleware realmente, sino que es un grupo de middleware.
Entre otras cosas, activa el sistema de sesión, permitiendo así que los usuarios se puedan
loguear.
Es importante que todas las rutas que sean accesibles en modo web (hay otros modos como
api) estén dentro de un grupo de rutas que ejecute el middleware web o se perderán los
datos de sesión.
El middleware auth obliga a que el usuario esté logueado para poder acceder a las rutas que
utilizan este middleware.
37. Crear tu propio middleware
Meetups
Pongamos, por ejemplo, que queremos limitar el acceso a unas determinadas rutas, para que
sólo sean accesibles al administrador.
Podemos comprobar este punto en cada método de nuestros controladores o dejar que un
middleware haga el filtro por nosotros.
Para crear un middleware, se lanza artisan:
php artisan make:middleware Admin
Se genera el fichero app/Http/Middleware/Admin.php
En esa clase, debemos incorporar en el método handle nuestra restricción.
Para determinar si el usuario es admin, simplemente miraremos que el user id sea 1
39. Crear tu propio middleware
Meetups
Para poder utilizarlo, debemos activarlo en
app/Kernel.php
Ya podemos usarlo en nuestro routes:
40. Blade: Procesamiento de plantillas
Meetups
https://laravel.com/docs/5.2/blade
Permite extender plantillas (layouts) existentes.
Permite utilizar plantillas dentro de otras (subviews)
Tiene un sistema de cacheo de plantillas.
Sintaxis de estructuras de control parecida a la alternativa de PHP.
Uso de {{ $foo }} para imprimir el contenido filtrado (htmlentities)
Uso de {{ !! $foo !! }} para imprimir el contenido sin filtrar
Inyección de services
NO trabaja en un contexto aislado/separado (como sí hace Twig)
41. Recursos y utilidades de interés
Meetups
https://laravel.com/docs/
https://laracasts.com/
https://github.com/barryvdh/laravel-debugbar
https://github.com/rcrowe/TwigBridge
https://github.com/rolando-caldas/laravel-phpvigo05