Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Instalación
Debemos tener instalado los siguientes componentes para poder empezar a desarrollar
proyectos en Laravel 5:
- Xampp https://www.apachefriends.org/es/index.html
- Editor https://www.jetbrains.com/phpstorm/
- Composer https://getcomposer.org/download/
- Git https://git-scm.com/
NOTA: Se recomienda descargar MAMP, es un gestor de descarga para Laravel
Crear un Proyecto
Se creará mediante Git Bash, dando click derecho en la carpeta principal y en la opción
Git Bash Here.
Una vez en el Git pondremos la siguiente consulta composer create-project --prefer-
dist laravel/laravel NombreProyecto "5.6.*"
Iniciar el servidor del proyecto
Para iniciar el proyecto y confirmar que la instalación de laravel se completó
correctamente, debemos ir a nuestra terminal, ubicándonos dentro de la carpeta del
proyecto, y ejecutar el comando php artisan serve, luego nos mostrará el link donde
se está ejecutando, lo copiaremos y pegaremos en nuestro navegador.
Configuración
Nombre de la aplicación
Por defecto el nombre de la aplicación es App, para poder cambiarlo a nuestra
preferencia, debemos abrir nuestra terminal y ejecutar el comando
php artisan app:name NombreAplicación, lo cual cambiará el nombre en todas sus
referencias.
Zona horaria
Para cambiar la zona horaria e indicarle en la cual nos encontramos debemos saber
primero cual es nuestra zona horaria, para ello podemos ir al siguiente link
http://php.net/manual/es/timezones.php
Lenguaje de mensajes
Para cambiar el lenguaje, primero debemos crear la carpeta donde estarán ubicados
todos los mensajes que mostrará, para ello iremos al siguiente repositorio
https://github.com/caouecs/Laravel-lang/tree/master/src , aquí elegiremos la
abreviatura del lenguaje que deseemos instalar, luego en el proyecto nos ubicaremos
en Resources / Assets / Lang y tendremos que insertar allí la carpeta (descargada o
copiada del repositorio) para que quede del siguiente modo.
Rutas
Las rutas están ubicadas en la carpeta routes, hay 4 tipos de archivos de rutas, en este
caso especificaremos el web.php, las rutas pueden usar los verbos http para indicar la
funcionalidad de la ruta.
Una ruta usualmente devuelve una vista, en el primer parámetro que se le da se indica
el link con el que se accederá a la ruta y en el segundo que retornará (En este caso es
la vista principal, y retornará la vista Welcome)
.
Parámetros
Se puede indicar que una ruta recibirá un parámetro, esto se hace agregando una
variable entre llaves, cuando se declara un parámetro es necesario indicarle a la
función de retorno que recibirá ese mismo parámetro para que pueda ejecutar sus
funcionalidades.
Si queremos indicar que un parámetro es opcional, le agregaremos un signo de
interrogación al final de su declaración entre llaves, y en la función debemos indicar
que será de null inicialmente.
Restricciones
Podemos controlar que caracteres recibirá nuestra ruta (números o letras), poniendo al
final de cada ruta el siguiente código.
Controlador
Para crear un controlador de forma rápida y sencilla, abriremos nuestra terminal y
ejecutaremos el comando php artisan make:controller NombreControlador para
crearlo automáticamente.
Para poder decirle a una ruta que usará una función definida en un controlador, solo
debemos enviarle como segundo parámetro el nombre del controlador seguido del
nombre de la función y listo, tal como se muestra en la imagen.
Ahora si queremos enviarle parámetros a las funciones dentro del controlador, primero
debemos agregar el parámetro en la ruta, como ya se explicó anteriormente, y luego en
la función del controlador indicarle que recibirá un parámetro.
Controlador Resource
Un controlador resource tiene las funcionalidades de un CRUD (Crear, Leer, Actualizar,
y Borrar), nos facilita una interfaz en el controlador para poder desarrollar estas lógicas,
para crearlo debemos abrir nuestra terminal y ejecutar el comando php artisan
make:controller –resource
Para poder enlazarlo a una ruta, debemos definir esta de modo resource también, y
aquí solo llamaremos al controlador, no a una función específica.
En la documentación de Laravel
https://laravel.com/docs/5.6/controllers nos muestra
cómo utilizar los métodos estándar definidos en el
controlador resource, como por ejemplo la función
Index se ejecuta al ingresar al controlador.
Vistas
Creando una vista
Para crear una vista solo debemos ubicarnos en la carpeta Resources / Views, darle
a nuevo archivo, darle un nombre a la vista y terminar con la extensión .blade.php, una
vez creado podemos insertar todo el código HTML que deseemos.
Podemos ayudarnos de Bootstrap (https://getbootstrap.com/docs/4.1/getting-
started/introduction/ ) para poder diseñar un formulario adecuado, para instalarlo solo
debemos referenciar su link y scripts según dice su documentación.
@yield y @section
La propiedad yield y section se usan cuando queremos cambiar contenido de otras
vistas, como son algunos casos en las vistas de cabecera y pie de página.
El yield se define en la vista destino y se define una variable cuyo valor será definido
por otra vista que lo use, el section se usa el vista origen y define qué valor tendrá
una variable yield de una vista destino, esto va acompañado de un extends que indica
cual es la página destino.
Cabecera – Vista Destino (Contiene solo un título para la página)
Funciones
Función If
Se puede implementar la función If en las vistas Blade anteponiendo el @ antes del If
y del end, después de esto ya se puede trabajar como si fuera PHP normal, indicando
cual será la condición a cumplirse.
Función For
Se puede implementar la función For del mismo modo que la función If, solo que aquí
se debe inicializar la variable control y especificar su interacción.
Función Foreach
La función Foreach se usa para recorrer un arreglo y mostrar todos sus objetos, se
nombra del mismo modo que la función If, solo que aquí se trae la variable que contiene
el arreglo y se le indica cual es el nombre de la variable que almacenará los objetos de
forma individual.
Función While
Para utilizar la función While se debe indicar una variable control y el límite de está
para indicar el final de la función (si no se hace será infinita), y establecer dentro del
código el aumento de la variable para alcanzar el límite.
@yield
El atributo yield se usa poder definir una variable y que otra vista que heredará esta le
pueda definir su valor, así se vuelve de forma más dinámica una misma cabecera
cuando va cambiando entre vistas.
- Vista 1
- Vista 2
Hay rutas que son semejantes, Laravel las puede diferenciar gracias al verbo http que
se le indica, en la siguiente imagen vemos que englobamos nuestro ejemplo de
formulario en una sola etiqueta form, en esa etiqueta especificamos que tendrá un
método de POST y que ejecutará la función, que según el cuadro anterior, es store.
Listado
Crearemos una vista donde se muestre el listado de todos objetos de nuestra tabla
(entrenadores), para ello en la función Index del controlador (porque esta función está
definida para listar según el resource) definiremos una variable que extraiga todos los
objetos mediante el método All (Después de los “ :: ” son métodos para trabajar con
tablas / modelos) y la enviaremos a una nueva vista junto con esta variable mediante
un compact.
NOTA: Agregar en la tabla de la base de datos un atributo que almacene la imagen / archivo
(En este caso es Avatar)
NOTA: No es buena práctica usar Style dentro de las mismas etiquetas, lo correcto sería
definir los Style por clase en una sección aparte
Vistas Detalle
Primero, en la vista del listado de los objetos, crearemos un botón que al presionarlo
nos re dirija a una vista donde se muestre el ID del objeto seleccionado, los
controladores resource definen que cuando se envía una ruta del objeto con su ID
entonces quieren mostrar sus detalles, por lo cual la función que ejecutan es la función
show.
Slugs
Los Slugs vienen a ser de forma resumida un atributo de una tabla que se usa para
mostrarse en las rutas de las vistas de detalle cuando se ingresa a una, evitando así
que los usuarios puedan entender la lógica y puedan malograr de alguna forma el
sistema. Estos Slugs pueden ser combinaciones de lo que se graba en otros atributos
para generar de ese modo un código único.
Por ejemplo crearemos un Slug que sea la concatenación del nombre del entrenador
con su número de ID, generando así un nuevo código, claro que el Slug debería ser
más complejo y de preferencia no incluir el ID porque habría problemas a la hora de
crear el Slug durante el registro de un dato.
NOTA: El edit en la ruta esta por defecto cuando se usa un controlador resource
Por defecto la función que se usará en el controlador es la edit, allí indicamos que nos
re direccionará a la vista donde podremos visualizar los datos (enviándole el objeto a
modificar)
Request y Validaciones
Los Request van a almacenar todas nuestras validaciones en un archivo dedicado a
eso, es mala práctica tener la lógica de almacenamiento (guardar, editar, etc.) junto a
las lógicas de validación.
Para crear uno abriremos nuestra consola y ejecutaremos el comando
php artisan make:request NombreRequest, lo cual nos creará el request y lo
guardará en App / Http / Request
La primera función nos indica si las funciones que usarán este request tendrán acceso
a sus validaciones, siempre hay que indicar que si (true), y la segunda función retorna
un arreglo de validaciones, aquí colocaremos las que deseemos implementar, podemos
guiarnos de la documentación de Laravel para saber todas las validaciones disponibles
https://laravel.com/docs/5.7/validation
Laravel también nos provee una forma de mostrar
mensajes de error cuando las validaciones no se
cumplen, solo debemos escribir el siguiente código
(que es por defecto) en el HTML de la vista que
usará las validaciones para que se muestren los
errores respectivos.
Eliminar
Primero debemos crear un formulario en la vista detalle que posea un método DELETE
y reciba como acción la vista del objeto con su identificador (en este caso es el Slug),
en él solo debemos crear un botón que ejecute esta acción.
Re direccionar
Usualmente cuando la acción de una
función se completa la aplicación debería
re direccionarnos a otra vista, como es
el caso de cuando se crea un objeto
debería retornar al listado de los mismos,
para ello solo debemos utilizar las
propiedades redirect y route seguido del
nombre de la ruta a la cual se enviará.
En el caso de los controladores resource, para saber el nombre de su ruta nos iremos
a la terminal y ejecutaremos el comando php artisan route:list, con el cual podremos
ver las rutas correspondientes .
Si queremos indicar que la vista a re direccionar recibirá un parámetro debemos hacerlo
de la siguiente forma
Notificar acción
Para notificar una acción usaremos el método with en el return de nuestra función,
este método envía información (variables) a la visa destino que se especifica, para
funcione debemos indicarle primero el nombre de la variable y luego la información que
va a contener.
Common
Podemos crear una carpeta Common en App / Views, en ella podremos agregar todas
las vistas que podrán ser utilizadas por muchas otras vistas o controladores, como por
ejemplo son los casos de error y notificación de acción descritas anteriormente, solo
debemos cortar dichos códigos y pegarlos en las nuevas vistas dentro del Common, e
incluirlos en las vistas donde estaban o se utilizarán.
NOTA: Se debe declarar en los controladores respectivos la variable que recibirá los archivos
en la carpeta Common (ejemplo la variable Estatus)
Autentificación
Creación y Personalización
Laravel ya nos provee poder un comando para poder crear las vistas, controladores, y
modelos de la autentificación de usuarios (login) de forma automática, para crearlos
debemos ejecutar el comando php artisan make:auth.
Roles de Usuario
Muchas veces es necesario especificar los roles de un usuario, esto se hace para definir
las características y permisos que puede tener cada usuario, primero tenemos que
crear los modelos necesarios que son 2 (Roles y la intermedia entre Roles y Usuarios),
luego en cada uno debemos agregar los atributos que se agregarán a las tablas.
NOTA: Esta tabla es una intermedia, por lo cual almacena los ID de las otras 2
Luego ejecutamos el comando php artisan migrate para que se almacene en la base
de datos.
Después para unir las tablas mediante Laravel escribiremos el siguiente código en los
modelos respectivos de Roles y Usuarios, indicando que cada uno estará enlazado con
el otro mediante una relación de uno a muchos.
Seeder
Los Seeder vienen a ser funcionalidades de Laravel que se utilizan para generar datos
de prueba o almacenar datos al inicio de las tablas respectivas.
Para crear uno ejecutaremos el comando php artisan make:seeder NombreSeeder,
se ubicarán en App / Database / Seeds, para la autentificación debemos crear uno para
roles y otro para usuarios.
NOTA: Los Seeder se pueden utilizar en tablas a las cuáles no se les realizará mantenimiento
NOTA: Aquí el orden sí importa pues los ejecutará en el mismo orden que se indica, en este
caso los roles deben ir primero ya que el Seeder de usuario utiliza al de roles.
Y por último ejecutaremos el comando php artisan migrate:refresh --seed para que
la información declarada en los Seeder pueda ser trasladada a la base de datos.
La última función sirve para identificar si el usuario está autorizado verificando que este
posea un rol, para ello solamente llamará a la función anterior y si esta no puede
verificarlo entonces abortará todos los procesos y le indicará que no tiene permisos.
Por último para implementar esta lógica en nuestro controlador, nos iremos a la función
que muestra nuestro listado de objetos, y allí utilizaremos una variable request (ya que
esta almacena los datos del usuario) para que esta se ejecute con la función de
autentificación y lo valide.