Documentos de Académico
Documentos de Profesional
Documentos de Cultura
FRAMEWORK
LARAVEL
Ingeniería en Tecnologías de la Información y Comunicaciones
ISC. Salvador Duarte Rodríguez
CONFIGURACIÓN SUBLIME
TEXT
Activar el Side Bar para una mejor visualización del proyecto.
Plugins extras
Intalación del Manejador de Paquetes
bootstrap ->
app.php (Archivo de arranque del Framework Laravel).
cache -> Archivos generados por Laravel.
resources -> Contiene los recursos de la aplicación (CSS, JS, lang, Views).
php –v
composer –v
Ahora para iniciar el servidor de Laravel se utiliza el siguiente comando en la consola/terminal
http://127.0.0.1:8000/
http://127.0.0.1:8000
Para verificar que todo este funcionando correctamente, se va a realizar la siguiente
modificación dentro del archivo “welcome.blade.php”, el cual se encuentra dentro de
“resources -> views”.
2.- Cambiar el texto “Laravel” por “Carrera ITIC” en la etiqueta <div class=“title m-b-md”>
3.- Borrar el menú que está debajo de la etiqueta del paso anterior.
Etiqueta <title>
ORIGINAL
<title>Laravel</title>
Etiqueta <title>
Modificada
<title>Carrera ITIC</title>
Etiquetas
<div class=“title m-b-md”>
Laravel
</div>
<div class=“links”> (Menú) </div>
ORIGINALES
Etiquetas
<div class=“title m-b-md”>
Carrera ITIC
</div>
<div class=“links”>(Menú)</div>
Eliminar esta etiqueta
MODIFICADAS
Página Principal
ORIGINAL
Página Principal
MODIFICADA
RUTAS EN LARAVEL
Las rutas están contenidas dentro de la carpeta “routes” en el archivo “web.php”, en el cual se
pueden definir la cantidad de rutas que se necesiten.
Nota: Las rutas únicamente deben dirigir el direccionamiento del usuario por la aplicación, por
lo que no deben de contener lógica de programación.
Al crear nuestro proyecto, Laravel nos proporciona la ruta inicial, la cual se puede tomar como
base para la creación de las demás.
Route::get(‘/’, function(){
return view(‘welcome’); //Muestra el contenido de la vista en el navegador
});
CREACIÓN DE RUTAS EN EL
ARCHIVO “WEB.PHP”
//Ruta para la página principal
Route::get(‘/’, function(){
return ‘Página Principal’; //Muestra el texto Página Principal
});
URL: /
URL: /
URL: /usuarios
//Ruta para la página Detalles de usuarios - Estática
Route::get(‘/usuarios/detalles’, function(){
return ‘Mostrando detalle del usuario: ’. $_GET[‘id’];
//Muestra el texto “Mostrando detalle del usuario: id”
//La variable id se pasa por la URL
});
URL: /usuarios/detalles?id=6
URL: /usuarios/detalles?id=6
Notas:
Ambas rutas hacen mismo direccionamiento.
Recuerda comentar la ruta “Detalles de usuario –
Estática”, ya que es un poco compleja y solo
dejamos activa la ruta “Detalles de usuario –
Dinámica”.
URL: /usuarios/6
//Ruta para la página de creación de usuarios
Route::get(‘/usuarios/nuevo’, function(){
return ‘Crear un nuevo usuario’;
//Muestra el texto Crear un nuevo usuario
});
URL: /usuarios/nuevo
Al crear estás rutas y probarlas en el navegador obtendemos una funcionalidad anormal, ya que
Laravel compara cada una de ellas en el orden en que fueron creadas, por lo que si una ruta coincide
con otra en un dato o parámetro, las demás no son tomadas en cuenta, ya que solo usa la primera
con la cual coincide.
Nota: Se recomienda que durante la creación de cada una de las rutas sea lo más detallada posible
con la fialidad de evitar confunciones para Laravel o ir acomodando las rutas de forma secuencial,
pero esto es un poco más complicado conforme crece un proyecto.
No se olviden de comentar la ruta “Detalles de usuario – Estática” para evitar problemas
Codificación de las rutas en el archivo Funcionamiento anormal de la ruta
web.php Creación de usuarios
URL: /usuarios/nuevo
Ahora vamos a modificar la ruta “Detalles de usuarios - Dinámica”, para evitar el problema
que surgió al detallarla un poco más
URL: /usuarios/6
Notas:
La ruta “Detalles de usuario - Dinámica” se
modificó para hacerla más detallada y evitar
confusión al ser llamada.
Se muestra el correcto funcionamiento de la ruta
“Creación de usuarios”.
URL: /usuarios/nuevo
//Ruta para la página Saludo – Varios parámetros
Route::get(‘/saludo/{nombre}/{apellido?}’, function($nombre, $apellido=null){
//En la dirección la variable apellido es opcional, por lo que lleva el signo “?”
//En la función anónima la variable apellido se inicializa en “null” por ser opcional
if($apellido){
return “Bienvenido {$nombre} {$apellido}”;
//Muestra el texto Bienvenido Nombre Apellido que se proporcionen
}else{
return “Bienvenido {$nombre}”;
//Muestra el texto Bienvenido Nombre que se proporciona
}
});
URL: /saludo/Salvador/Duarte
URL: /saludo/Salvador
Codificación de las rutas en el archivo
web.php
URL: /saludo/Salvador/Duarte
Notas:
La ruta “Saludo” maneja dos variables para su
ejecución, la primera es obligatoria y la segunda es
opcional.
URL: /saludo/Salvador
PRUEBAS EN LARAVEL
Las pruebas que se realizan en el navegador denominadas “pruebas en el momento”, no
garantizan el funcionamiento futuro de la aplicación, ya que se pueden ingresar errores de
cualquier tipo.
Laravel tiene la Capa de Pruebas, la cual esta contenida en la carpeta “test”, la cual contiene
dos subcarpetas las cuales son:
Por lo cual, Laravel permite hacer pruebas automátizadas de la aplicación de manera rápida y
sencilla.
Para realizar las pruebas automátizadas vamos a utilizar las Terminal/Consola, ya que es un
poco más rapida y sencilla esta forma, por medio de los siguientes comandos:
3.- Se puede definir un alias para realizar ésta acción mediante el comando:
alias p= vendor/bin/phpunit
alias p= vendor/phpunit/phpunit/phpunit
Para comprobar el funcionamiento de las pruebas se escribe p en la terminal y se da enter
para ejecutar las pruebas y ver los resultados que se obtienen.
Ejecución de pruebas
Comando:
vendor/bin/phpunit
vendor\bin\phpunit
vendor\phpunit\phpunit\phpunit
Ejecución de pruebas
Comandos:
alias p=vendor/bin/phpunit
p
CREACIÓN DE PRUEBAS EN
LARAVEL
Para crear las pruebas nos dirigimos a la terminal/consola e ingresamos el comando:
Ahora nos dirigimos al editor de código (Sublime Text) para verificar la creación del archivo
“ModuloUsuarioTest.php” en el cual vamos a codificar las pruebas, el cual debe de estar
contenido en “test -> Feature” y su abre para ver su contenido.
Nota:
Al crear un nuevo archivo para codificar pruebas, éste debe de terminar con la palabra “Test”
para que phpunit lo reconozca de manera adecuada.
Verificar la creación del archivo:
ModuloUsuarioTest.php
en
test -> Feature
/**
* @return void
*/
public function testBasicTest(){ //Función para realizar la prueba con prefijo “test”
$this->get(‘/’) //Ruta que va a ser evaluada en la prueba
->assertStatus(200) //Código del resultado esperado
->assertSee(‘Página Principal’);//Texto que se espera visualizar en el navegador
}
Verificar el código del archivo:
ExampleTest.php
en
test -> Feature
y modificarlo
/**
* @test //Permite quitar el prefijo “test” del nombre de la función
*/
public function carga_lista_de_usuarios(){ //Función para realizar la prueba
$this->get(‘/usuarios’) //Ruta que va a ser evaluada
->assertStatus(200) //Código del resultado esperado
->assertSee(‘Usuarios’); //Texto que se espera visualizar en el navegador
}
Nota:
Ahora nos dirigimos al editor de código (Sublime Text) para verificar la creación del archivo
“ControladorUsuario.php” en el cual vamos a codificar el controlador, el cual debe de estar
contenido en “app -> http -> Controllers” y su abre para ver su contenido.
Verificar la creación del archivo:
ControladorUsuario.php
en
app -> Http -> Controllers
Dentro de esta clase, se van a codificar los métodos que se van a vincular con las rutas que
fueron creadas anteriormente para hacerlas más simples y sencillas de entender al quietarles la
lógica de programación.
Para realizar el vínculo entre el controlador y las rutas, se recomienda trabajar esta parte en
dos columnas para identificar de manera rápida los cambios que se van a producir, como se
muestra a continuación.
Para modificar el método “listar” de la siguiente forma, para que muestre una vista en lugar de
un texto.
Archivo
ControladorUsuario.php
MODIFICADO
Se pueden pasar datos a las Vistas o Views en Laravel de las siguientes dos formas:
Datos estáticos (Arreglos de Datos)
Datos dinámicos (Bases de Datos)
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport” content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Lista de Usuarios</title>
</head>
<body>
</body>
</html>
Enseguida se crea la vista “usuarios.php” en “resources -> views” y le agregamos el
siguiente código HTML/PHP en dentro de la etiqueta <body>:
<ul>
<?php foreach ($usuarios as $usuario): ?>
<li><?php echo $usuario ?></li>
<?php endforeach ?>
</ul>
Código completo de la Vista/View “usuarios.php”
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport” content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Lista de Usuarios</title>
</head>
<body>
<h1>Listado de Usuarios</h1>
<ul>
<?php foreach ($usuarios as $usuario): ?>
<li><?php echo $usuario ?></li>
<?php endforeach; ?>
</ul>
</body>
</html>
Ahora modificamos de nuevo el archivo “ControladorUsuario.php” agregandole el paso de datos
a la vista que es llamada en el método “listar” de la siguiente manera:
->assertSee(‘Miriam’)
->assertSee(‘Salvador’)
Éstas líneas de código tienen como propósito verificar que los usuarios que se muestran en el
navegador son los que están contenidos en el arreglo de usuarios ($usuarios), el cual está
definido en el método “listar” del controlador (ControladorUsuario.php)
Archivo
ModuloUsuarioTest.php
Método carga_lista_de_usuarios
ORIGINAL
Archivo
ModuloUsuarioTest.php
Método carga_lista_de_usuarios
MODIFICADO
EJECUCIÓN DE LAS PRUEBAS
MODULOUSUARIOTEST.PHP
Ahora vamos a modificar el arreglo de usuarios ($usuarios) del controlador
“ControladorUsuario.php”, al agregarle el siguiente registro:
Con la finalidad de producir un error de seguridad en la aplicación web, para mostrar de que
manera se puede evitar que los usuarios introduzcan este tipo de códigos maliciosos en nuestra
plataforma.
Archivo
ControladorUsuario.php
Arreglo $usuarios
MODIFICADO
Error de seguridad
Ejecución de código JS
Introducido por el usuario y ejecutado cada vez
que se actualice la página
URL: /usuarios
Para quitar este error de seguridad que se genera cuando un usuario mal intencionado
introduce código de JavaScript o cualquier otro código (SQL, etc.), Laravel proporciona
ciertas acciones o funciones llamadas “Helpers”que evitan que se ejecuten éste tipo códigos,
por ejemplo:
La función helper “e”, la cual nos permite escapar o transformar código HTML, JS, SQL,
etc., en texto plano, lo cual evita que se lleve a cabo la acción de dicho código, mostrandoce
únicamente el código sin ejecutarse, esta función se va a implementar en la variable $usuario
de la vista “usuarios.php”, como se muestra a continuación.
e($usuario)
Archivo View
usuarios.php
Variable e($usuario)
MODIFICADO
Código JS
Transformado en Texto Plano
URL: /usuarios
Por otro lado, también se pueden mandar varias variables a una vista, al ser agregadas al
arreglos asociativo que se le pasa como segundo parámetro a una Vista/View.
Ahora dentro del archivo “ControladorUsuarios.php” vamos a modificar la función
“return” del método “listar” de la siguiente forma:
return view(‘usuarios’, [
‘usuarios’ => $usuarios,
‘titulo’ => ‘Listado de usuarios’
]);
Por lo cual también haremos que el título de la página y el encabezado de la lista de usuarios
sean dinámicos, esto al modificar las siguientes etiquetas en el archivo de la Vista/View
llamado “usuarios.php”
Archivo View
usuarios.php
MODIFICADO
VISUALIZACIÓN EN EL
NAVEGADOR DE LA
VISTA/VIEW “USUARIOS.PHP”
Ahora vamos a actualizar el archivo de pruebas “ModuloUsuarioTest.php” en el método
“carga_lista_de_usuarios”, para estar seguros que no hay problemas hasta el momento.
->assertSee(‘Usuarios’)
Por:
->assertSee(‘Listado de usuarios’)
Por último, comprobamos que las pruebas esten pasando de forma satisfactoria.
Archivo
ModuloUsuarioTest.php
MODIFICADO
return view(‘usuarios’)
-> with(‘usuarios’, $usuarios)
-> with(‘titulo’ , ‘Listado de usuarios’);
PLANTILLAS BLADE
LARAVEL
El Sistema de Plantillas Blade nos permite realizar diseños más rápidos y sencillos en torno
al acabado del sitio web, ya que permite la reutilización del código de diseño (HTML, CSS,
JS, etc.) por medio de diversas directivas.
.blade.php
La sintaxis de Blade para imprimir una variable es entre llaves doble “{{ }}”, lo que se pone
dentro es código PHP.
Las directivas de Blade permiten simplificar el código PHP utilizado, además éstas se
caracterizan por comenzar con el carácter “@” como se muestra:
<?php foreach ($usuarios as $usuario): ?> por @foreach ($usuarios as $usuario)
<?php endforeach; ?> por @endforeach
Archivo View
usuario.blade.php
MODIFICADO
Probamos que este funcionando correctamente el código anterior en el navegador mediante las
rutas:
URL: /usuarios?empty
URL: /usuarios
Codificación del controlador en el archivo
ControladorUsuario.php
URL: /usuarios
URL: /usuarios?empty
Ahora vamos a modificar el View “usuarios.blade.php”, el cual está ubicado en “resources
-> views” de la siguiente manera:
@if(! empty($usuarios))
<ul>
@foreach ($usuarios as $usuario)
<li>{{ $usuario }}</li>
@endforeach
</ul>
@else
<p>No hay usuarios registrados</p>
@endif
URL: /usuarios
URL: /usuarios?empty
Ahora vamos a agregar una nueva prueba al archivo “ModuloUsuarioTest.php” el cual está
ubicado en “test -> Feature”.
/**
* @test
*/
function mostrar_lista_vacia(){
$this->get(‘/usuarios?empty’)
->assertStatus(200)
->assertSee(‘No hay usuarios registrados’);
}
https://getbootstrap.com/docs/4.5/examples/sticky-footer-navbar/
y la guardamos con el nombre “bootstrap.html”.
https://getbootstrap.com -> Examples Examples -> Custom Components
Archivo 1:
Crear un archivo llamado “encabezado.blade.php” en la ubicación “resources -> views”.
En este archivo se va a copiar el código del archivo “bootstrap.html” de la línea 1 hasta la
línea 87 o desde la etiqueta <!doctype html> hasta la etiqueta <div class="container">
Archivo 2:
Crear un archivo llamado “pie.blade.php” en la ubicación “resources -> views”.
En este archivo se va a copiar el código del archivo “bootstrap.html” de la línea 91 hasta la
línea 108 o desde la etiqueta </div> hasta la etiqueta</html>.
Archivo
encabezado.blade.php
resources -> views
Archivo
pie.blade.php
resources -> views
Ahora vamos a modificar la vista/view llamada “usuarios.blade.php” al incluir las
siguientes directivas del Sistema de Plantillas Blade de Laravel.
@include('encabezado’)
<div class=“row mt-3”>
<div class=“col-8”>
<h1>{{ $titulo }}</h1>
@if(!empty($usuarios))
<ul>
@foreach ($usuarios as $usuario)
<li>{{ $usuario }}</li>
@endforeach
</ul>
CONTINUACIÓN DEL CÓDIGO
@else
<p>No hay usuarios registrados</p>
@endif
</div>
<div class=“col-4”>
<h2>Barra Lateral</h2>
</div>
<div>
@include('pie’)
<h2>Barra Lateral</h2>
Visualización de la ruta
/usuarios/6
en el navegador
Manda un error porque la vista
“mostrarUsuarios” NO EXISTE
Para corregir el error que se acaba de presentar nos dirigimos a la ubicación “resources ->
views” y creamos la vista/view “mostrarUsuarios.blade.php” y en la cual vamos a copiar el
diseño que tenemos en la vista “usuarios.blade.php” y le realizamos los siguientes cambios:
Nota:
Se va a presentar un problema con los estilos del sitio web, ya que no se van a estar
implementando correctamente, pero las pruebas si van a estar funcionando correctamente.
Mal funcionamiento de los estilos en la ruta /usuarios/
mostrar.blade.php – Modificado
{id}
Cambiamos la etiqueta:
El método asset de Blade nos permite obtener la ruta absoluta que tiene Laravel al
archivo “estilos.css” para poder encontrarlo, recordemos que ya estaba creado en la
ubicación “public -> css” y que permitia el buen funcionamiento de la plantilla base
“bootstrap.html”.
Archivo
encabezado.blade.php
resources -> views
Modificado
Visualización de la ruta
/usuarios/6
en el navegador
También podemos hacer el diseño base del sitio web en un solo archivo, como lo veremos a
continuación:
Nota: