Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SUDAMERICANO
DESARROLLADA POR:
ING. IGNACIO ALBÁN IDROVO
Fecha: 14/07/2020
Contenido
CAPITULO 1 ......................................................................................................................... 1
Introducción al modelo de programación MVC. ............................................................... 1
CAPITULO 2 ......................................................................................................................... 5
Utilizando Laravel como Framework de desarrollo .......................................................... 5
CAPITULO 3 ....................................................................................................................... 11
Directorios y archivos principales de Laravel y Artisan .................................................. 11
CAPITULO 4 ....................................................................................................................... 15
Iniciando la creación del proyecto ................................................................................... 15
CAPITULO 5 ....................................................................................................................... 21
Creando Controladores .................................................................................................... 21
CAPITULO 6 ....................................................................................................................... 27
RUTEADORES .................................................................................................................... 27
CAPITULO 7 ....................................................................................................................... 30
TRABAJANDO CON FORMULARIOS ................................................................................. 30
CAPITULO 8 ....................................................................................................................... 35
TRABAJANDO CON MODELOS ......................................................................................... 35
Descripción de los Talleres ............................................................................................... 43
Ing. Ignacio Albán Idrovo Introducción al modelo de programación MVC
CAPITULO 1
HTML
Bootstrap
JQuery
CSS
Un lenguaje de programación sea éste: Java, PHP, C#, Python, entre otros.
Manejo y desarrollo en una base de datos, sea ésta: MySql, Sql Server,
Oracle, Postgres, Informix, entre otra.
• No se compila, se
interpreta
Abierto • El código es visible y
puede ser modificado.
Portal
Puede contener diversas
Su contenido puede cambiar Se adapta a cualquier subaplicaciones como correo
durante la ejecución. dispositivo. electrónico, buscador, foros,
entre otros.
Tienda virtual
Inclue un panel de gestión para
Su contenido está orientado a la Permite pagos con tarjetas de
los productos, un ejemplo es
venta de productos y/o servicios. crédito, paypalm, entre otros.
Amazon.
Gestor de contenido
Permite la actualización de su contenido de forma
Ejemplo de ésto es Wordpress, Joomla o Drupal
dinámica y contínua.
¿Qué es MVC?
Es un paradigma o modelo de desarrollo de aplicaciones, ha sido usado hace
muchos años, es decir no es nada nuevo, fue introducido en el desarrollo de
aplicaciones por Trygve Reenskaug en Smalltalk, cuando trabajó en Xerox en los
años 70, pero fue en 1988 cuando ya forma parte de un proyecto o artículo en
concreto.
HMVC MVP
MVC
MVA MVVM
Figura 4: Tendencias de desarrollo surgidas a partir del MVC.
index.php
Request vía POST o
GET Controller
View Model
Response en formato:
HTML, XML o JSON
Taller 1
Realice una investigación que permita realizar la comparación de los frameworks
Zend y Codeigniter con Laravel, analice rendimiento, facilidad de codificación y
curva de aprendizaje
Ing. Ignacio Albán Idrovo Utilizando Laravel como Framework de desarrollo
CAPITULO 2
Requerimientos
Entre los diversos requerimientos que se tiene para poder trabajar con ésta
tecnología tenemos los siguientes:
Un servidor web, el cual puede ser Apache, IIS, Nginx, Tomcat o cualquier
otro dependiendo del lenguaje de programación con el que se trabaje y en
algunos casos también el sistema operativo. Para el caso de las prácticas a
realizar se utilizará Xampp.
Tener instalado el módulo de PHP en su servidor web, para versiones de
Laravel 5.8 use versiones de PHP 7.2 o superior.
Se debe instalar Composer, su instalación depende del sistema operativo, en el
caso de Windows luego de instalar éste aplicativo, se recomienda reiniciar su
computador.
# Alias Laravel
Include conf/alias/alias.conf
Nota: recuerde que un archivo que inicia con punto en Linux, es un archivo
oculto, por lo cual, si usted usa el comando ls para ver los archivos en el
directorio public, este no se mostrará.
Ing. Ignacio Albán Idrovo Utilizando Laravel como Framework de desarrollo
Taller 2
Realice una investigación permita crear una página web básica que incluya texto
(título, y contenido) y una imagen, ésta debe ser hecha con CodeIgniter, analice
los procesos de instalación del Framework, codificación y funcionalidad, luego
realice la misma página en Laravel, anote los pasos realizados, compárelos e
indique las similitudes, diferencias y analice cuál de ellos le pareció más simple.
Ing. Ignacio Albán Idrovo Directorios y archivos principales de Laravel y Arsitan
CAPITULO 3
Directorio app
Contiene el código del proyecto, es decir la parte lógica, o dicho de otra manera
toda la programación que se va a crear, contiene otros subdirectorios como son:
Console: El cual contiene todos los comandos que utiliza artisan y que se irán
utilizando a medida que se va avanzando.
Directorio config
Contiene los diferentes archivos de configuración de la aplicación, algunos de
ellos son específicos como database.php o mail.php y otros generales como es el
caso de app.php.
Directorio public
Contiene los diferentes archivos que se usarán en la aplicación, estos pueden ser
imágenes, videos, javascript, hojas de estilo, entre otros.
Directorio resources
Entre los diferentes archivos y directorios que contiene está el directorio views, el
cual almacenará los diversos archivos de vistas que se crearán.
Directorio routes
Contiene varios archivos de los cuales se usará y modificará web.php, el cual
permitirá definir las diferentes rutas a las cuáles la aplicación responderá y re-
dirigirá.
Ing. Ignacio Albán Idrovo Directorios y archivos principales de Laravel y Arsitan
¿Qué es Artisan?
Artisan es una herramienta proporcionada por Laravel que funciona en una
interfaz de comandos (CLI – Command Line Interface), y está basada en la
consola de Symphony y facilita la acción de diversas acciones, incluso si la
aplicación se encuentra en un entorno de producción. (Saleh, 2019)
Como se indicó previamente artisan funciona en CLI, por lo cual se necesita abrir
una consola de comandos y ejecutar el comando:
Por ejemplo si se desea ver un listado de los comandos que podemos ejecutar con
artisan podemos usar el comando
Con lo cual se iniciará un servidor con un puerto 8000, tal como se muestra a
continuación
Figura 20: Verificación de existencia del puerto 8000 del servidor artisan
Taller 3
Realice una investigación que permita conocer los comandos más comunes y que
piense usted que son útiles al momento de usar artisan. Luego investigue cómo
crear un comando personalizado en artisan, y luego genere uno que permita crear
una vista con la estructura base (TAGS HTML> de una página web.
Ing. Ignacio Albán Idrovo Iniciando la creación del proyecto
CAPITULO 4
Las vistas son archivos de extensión php que se crean en el subdirectorio views
del directorio resources de Laravel.
<nombre_archivo>.php
Cabe indicar que cuando el contenido de nuestra vista va a variar por algún
motivo, como por ejemplo una consulta a una base de datos, dicha página deberá
ser manipulada mediante el uso de Blade.
¿Qué es Blade?
Blade es el sistema de plantillas que utiliza Laravel, para que el Framework
identifique que se va a usar éste sistema, el archivo de vista debe ser grabado con
la extensión blade.php, es decir tener el siguiente formato
<nombre_archivo>.blade.php
Para implementar ésta plantilla en las diferentes vistas se debe tener en cuenta qué
acción se quiere realizar, puesto que tiene varios tipos de instrucciones que se
pueden usar, entre las cuales tenemos:
Imprimir variables
{{ $mivariable }}
{{ $miArreglo[3] }}
{{ $miArreglo[‘miKey’] }}
Ing. Ignacio Albán Idrovo Iniciando la creación del proyecto
{{ $miObjetomiAtributo }}
{{ strtoupper($mivariable) }}
{{ $mivariable or ‘ValorDefault’ }}
{{ $mivariable or ‘1’ }}
{{ $mivariable or ‘abc’ }}
{{ $mivariable or ‘’ }}
{ !! $mivariable !! }
Condicionales
@if (<condición>)
@endif
Ing. Ignacio Albán Idrovo Iniciando la creación del proyecto
@if(<condición>)
@else
@endif
@if (<condicional_1>)
@elseif (<condicional_2>
@else
@endif
Bucles
@while(<condicional>)
@endwhile
@for(<condicional>)
@endfor
@foreach(<condicional>)
@endforeach
Ing. Ignacio Albán Idrovo Iniciando la creación del proyecto
@foreach(<condicional>)
@continue(<condicional_1>)
@break(<condicional_2>)
@endforeach
Por ejemplo:
@continue( $userid == 2 )
@break( $userid == 7 )
@endforeach
SENTENCIA DESCRIPCIÓN
$loopindex Índice de la iteración del bucle actual.
$loopiteration Número de iteración del bucle actual.
$loopcount Número total de elementos en la matriz que se está
iterando.
$loopfirst Permite conocer si se está en la primera iteración.
$looplast Permite conocer si se está en la última iteración.
parciales, las cuales pueden ser incluidas en la vista principal mediante el uso de
la sentencia @include, cuyo formato es el siguiente
@include(‘<vista_parcial’>,<variable_o_variables>)
@include(‘mivistaparcial’, [‘campo1’=>’valor1’,’campo2’=>’valor2’])
Directorio3 view(‘Directori1.Directorio2.vista2’);
Vista1.blade.ph
p Mientras que para incluir a Vista1 dentro de
Vista2, se tendría que usar una sentencia como
Vista2.blade.p
hp @include(‘Directorio1.Directorio2.Directori3
Figura 23: Estructura de Vistas .vista1)
Taller 4
Realice una página en Laravel que presente una página web dinámica que use
todos los comandos Blade vistos en el capítulo actual
Ing. Ignacio Albán Idrovo Creando Controladores
CAPITULO 5
Creando Controladores
Definición
Un controlador es un objeto cuya estructura y funcionamiento es heredado de una
clase denominada Controller, éstos deben ser creados en el directorio
app/Http/Controllers.
Es posible crear un controlador de varias formas, entre las cuales está la edición
directa el cual implica crear un archivo con la siguiente estructura:
namespace App\Http\Controller;
use App\Http\Controllers\Controller;
Además del método anterior, es posible hacer uso de comandos artisan, es decir
hacer uso de la sentencia make, para crear éste componente, por ejemplo:
Los atributos, deben ser definidos usando las sentencias: private, public o
protected.
Los atributos, deben tener el símbolo de $ al inicio de su definición.
Los atributos, pueden o no tener asignado un valor inicial, se recomienda
que siempre le asigne uno.
Ing. Ignacio Albán Idrovo Creando Controladores
namespace App\Http\Controller;
use App\Http\Controllers\Controller;
// Código a ejecutar
Método público que recibe
return $respuesta; datos vía Request.
}
Utilidad
Como se indicó previamente los controladores permiten la definición de todo el
comportamiento o funcionamiento de la aplicación, por lo cual, dependiendo del
tamaño de nuestro proyecto, existirán 1, 2, …, n Controladores, se recomienda
que defina de forma adecuadamente cada uno de ellos.
Model
XML
JSON
Como se puede ver en la gráfica anterior, las salidas o retornos del controlador,
deben ser una vista o uno de los dos formatos mencionados. Cuando un método
del controlador no retorna alguna acción, éstos deberán ser definidos como
private, y se los usará en alguno de los otros métodos definidos.
namespace App\Http\Controller;
use App\Http\Controllers\Controller;
private $MiAtributo = 0;
// Código a ejecutar
return view(‘mivista’);
Cuando deseamos retornar un dato en formato JSON, éste debe ser convertido
desde un objeto (class) o un arreglo (array), mediante la instrucción json_encode.
Ing. Ignacio Albán Idrovo Creando Controladores
namespace App\Http\Controller;
use App\Http\Controllers\Controller;
private $MiAtributo = 0;
Controlador base.
// Código a ejecutar
return view(‘mivista’);
namespace App\Http\Controller;
Controlador especializado.
use App\Http\Controllers\Controller;
Cuando se quiere hacer uso de un arreglo, recuerde que éstos se pueden definir
usando la sentencia array, o directamente mediante el uso de corchetes, por
ejemplo:
$data = array(‘mivariable’=>’valor’);
$data = [‘mivariable’=>’valor’];
}
Envío de datos usando
}
array definido por
corchetes.
return view(‘mivista’)
->with(‘mivariable’,’valor’);
}
Envío de datos usando
} sentencia with.
Taller 5
Cree una aplicación web con tres páginas, las cuales deberán usar dos
controladores lo cuales heredarán de una previa denominada base, no deben usar
modelos similares a los incluidos en el capítulo actual, incluya el código y las
capturas de pantallas necesarias para poder mostrar el funcionamiento de las
mismas.
Ing. Ignacio Albán Idrovo Ruteadores
CAPITULO 6
RUTEADORES
Definición
En informática los ruteadores son dispositivos que se encarga de rutear o dirigir la
información desde un punto perteneciente a una red a otro de otra red,
completamente diferentes y sólo conocidas por dicho punto de conexión.
Callback
Route View
Route Controller
Como se puede visualizar en la gráfica anterior, es posible hacer que una ruta
funcione con un callback, con un controller, llamar directamente a una vista
(siempre que sea estática), o llamar a otra ruta, en cuyo caso estamos hablando de
un re direccionamiento.
Route::<TIPO_SOLICITUD>(‘<RUTA>’,’PROCESO_A_EJECUTAR’);
Route::<TIPO_SOLICITUD>(‘<RUTA>’,’CONTROLLER@METODO’);
Donde TIPO SOLICITUD, puede ser POST o GET, tenga en consideración que,
si se está implementando un servicio REST, éstos también pueden soportar PUT y
DELETE, estos suelen implementarse cuando usted está trabajando con un
modelo CRUD (Create, Read, Update, Delete), se recomienda investigar acerca
de éste tema, otros tipos a usar son patch y options, investigue la forma de usarlos
y el para qué.
Route::get(‘/’, function(){
return “Hola”;
}); callback
Route::post (‘/generar’,MiControlador@generar);
Nota: Cuando usamos una ruta con método post, es necesario que nuestro
formulario tenga definido un objeto token, lo cual es una seguridad implementada
por Laravel, éste tema se mostrará más adelante, en la sección de formularios.
Ing. Ignacio Albán Idrovo Ruteadores
Taller 6
Realice una investigación que permita visualizar, las diferentes formas en las
cuales se puede utilizar las rutas en Laravel, con ejemplos que expliquen
adecuadamente su funcionamiento.
Ing. Ignacio Albán Idrovo Trabajando con Formularios
CAPITULO 7
Cuando usamos HTML, éstos datos se ingresan en TAGS input definidos con un
type de text y password respectivamente.
{{ csrf_field }}
Tenga que consideración que los token generados por Laravel, son únicos e
irrepetibles, lo cual evita que se generen ataques de tipo CSRF.
Ing. Ignacio Albán Idrovo Trabajando con Formularios
...
protected $except = [
Las rutas login y singup, están
"login","singup"
definidas no necesitan csrf token.
];
Esto realizará todas las acciones que sean necesarias para habilitar los elementos
deseados, también es posible hacerlo de forma manual, para lo cual debe seguir
los siguientes pasos:
“laravelcollective/html” : “version”
“laravelcollective/html” : “~5.*”
“laravelcollective/html” : “~6.*”
2. Ejecutar el comando:
‘providers’=> [
// …
Collective\Html\HtmlServiceProvider::class,
// …
‘aliases’=>[
// …
// …
Dos de los elementos más utilizados son los INPUT y los SELECT, por lo cual serán los que
se muestren en éste tópico
Uso de INPUTS
La sentencia que permite incluir un input es
Ing. Ignacio Albán Idrovo Trabajando con Formularios
Form::text(‘usuario’);
Form::text(‘usuario’, ‘alanso’);
Uso de SELECT
Tenga en consideración que el TAG select tiene la siguiente form:
<option>valor1</option>
<option>valor2</option>
</select>
Para lograr que se genere los tags anteriormente mostrados, se debe usar la
siguiente sentencia.
Form::select(‘minombre’,[valor1, valor2])
</select>
Taller 7
Realice una página web que tenga o llame a dos páginas adicionales, cada una de
ellas con un formulario, los controles a utilizar serán INPUT, SELECT,
CHECKBOX y RADIO, cada uno de ellos deben ser creados a través del uso de
los helpers, finalmente una tercera página que use los mismos controles indicados
en una de las páginas previas, pero usando tags html ordinarios, compare el
proceso utilizado, el tiempo que demoró en crearlo, compare y presente los datos
en una tabla. Finalmente, de su opinión con respecto a la comparación realizada.
Ing. Ignacio Albán Idrovo Trabajando con Modelos
CAPITULO 8
Para visualizar qué librerías o módulos tiene instalado php, es necesario usar la
sentencia phpinfo, la cual mostrará una interface similar a la siguiente:
Figura 27: Pantalla que muestra que PHP tiene instalado el módulo MySqli
Figura 28: Interface que muestra la existencia del módulo de PDO para MySql en PHP
Definición
Los modelos son objetos que modelan las tablas o vistas de una base de datos, hay
que tener en consideración los siguientes aspectos cuando definimos un modelo:
Las tablas deben incluir los campos created_at y updated_at (estos pueden
omitirse o cambiar su nombre como ve verá posteriormente).
Los nombres de los modelos deber ser iguales a los nombres de las tablas,
para casos complejos puede hacerse ciertos cambios como se verá
posteriormente).
Los atributos del modelo deben ser los mismos que los de la tabla o vista.
Creando un Modelo
Al igual que los controladores es posible crear un modelo mediante la edición un
archivo, o usando la sentencia make de artisan, tal como se ve a continuación:
namespace App;
use Illuminate\Database\Eloquent\Model;
1. Nombre del campo de tipo primary key. En caso de ser diferente de id, se
incluirá la sentencia
2. Tipo de dato del campo primary key. En caso de ser diferente de int, se usará
la sentencia
Por ejemplo, si se tiene una tabla denominada Cliente cuyo campo primary key es
cédula, el cual es de tipo string y debido al tipo de dato éste no es auto
incremental, entonces el código del modelo sería:
namespace App;
use Illuminate\Database\Eloquent\Model;
namespace App;
use Illuminate\Database\Eloquent\Model;
namespace App;
use Illuminate\Database\Eloquent\Model;
Una vez que nuestro modelo ha sido definido, ya es posible su utilización, para
ello se debe instanciar el modelo y usar los métodos inherentes al modelo. La
instanciación se debe realizar en el controlador, esto se usa cuando deseamos
insertar datos nuevos en una tabla.
use App\MiModelo;
Ing. Ignacio Albán Idrovo Trabajando con Modelos
use App\MiModelo
Por ejemplo, queremos obtener los datos de la persona cuyo número de cédula es
0923453423, para ello el campo cedula debe ser de tipo primary key.
$persona = Persona::find(‘0923453423’);
Obteniendo todos los datos. - Para obtener todos los datos es necesario usar la
sentencia o método all, por ejemplo:
$datos = MiModelo::all();
$datos = MiModelo::first();
->where(‘edad’, ‘<=’,25)
->get();
En este caso, para que Eloquent nos retorne los datos es necesario
(OBLIGATORIO) agregar la sentencia get(), al final.
->get();
Lo cual es equivalente a
Actividad 1
Investigar la forma en la cual es posible ejecutar sentencias como SUM, COUNT,
MAX y MIN.
Actividad 2
Investigar la forma en la cual es posible ejecutar sentencias SQL que no son
estándar.
Actividad 3
Investigar la forma en la cual es posible ejecutar stored procedures
Taller 8
Realice una aplicación web, que tenga una interfaz gráfica que incluya un
elemento texto (input) y combo (select), para realizar un proceso de búsqueda o
filtrado de datos.
El taller debe incluir la vista, el controlador, el modelo, la ruta. Con una captura
de pantalla que permita verificar su funcionamiento.
Ing. Ignacio Albán Idrovo Descripción de los Talleres