You are on page 1of 95

LARAVEL: INSTALACIN

En esta primera publicacin sobre Laravel veremos como instalar este maravilloso framework para
PHP, Lo cual haremos mediante composer para as tener el administrador de dependencias de PHP y
crear
el
proyecto
sobre
Laravel
como
primer
ejemplo.
Vea el ejemplo en GitHub.

Procedimiento:

Custom Search

Primero debemos asegurarnos que tenemos instalado PHP en nuestra mquina ya sea
con Wamp, o Xampp. No se har el manual para instalar PHP ya que existe mucha
informacin de aquello, adems se da por supuesta que quien est buscando informacin
de
Laravel
ya
tiene
instalado
PHP
en
su
PC.
Luego de asegurarnos que tenemos PHP instalado, descargamos el instalador de
composer
para
windows
desde
el
siguiente
enlace.
Descargar

composer

para

windows.

Una vez que tengamos el archivo "Setup-Composer.exe" empezaremos con la instalacin


del mismo. Para esto slo ejecutamos dicho archivo. Es muy probable que nos pida
autorizacin para iniciar el programa con permisos de administrador a lo cual le damos
dicha
autorizacin.
Una vez se haya realizado lo anterior nos saldr la siguiente ventana donde simplemente
la
damos
a
"Siguiente".

En la siguiente ventana nos dar seleccionado por defecto la instalacin de composer y


nos dar la opcin de elegir la instalacin de Shell Menus para poder correr composer
desde windows explorer lo cual dejaremos como est y le daremos nuevamente a
"Siguiente".

En nuestra tercera ventana tendremos que brindar la direccin del archivo "php.exe" lo
cual para mi caso se encuentra en "C:\wamp\bin\php\php5.4.12\php.exe". Ud. tendr que
ubicar su archivo segn donde haya realizado la instalacin de PHP.

Luego de haber seleccionado la direccin de "php.exe" le damos al botn "Siguiente".


Posteriormente empezar a cargar una barra de progreso para luego mostrar una ventana
donde nos indicar que verifiquemos ciertos aspectos para la instalacin de composer los
cuales vendra a ser.
La versin de PHP que pide composer segn su caso.

Agregar a las variables de entorno la direccin de nuestro archivo binario de php.

Agregar a las variables de entorno la direccin de los binarios de composer.

Disponibilidad de la instalacin de Shell Menus

Y luego para iniciar la instalacin le damos clic al botn "Install" con lo que descargar de
internet todo lo necesario para darle funcionamiento a composer.
En caso que les solicite activar alguna extensin adicional sobre PHP como es el caso de
openssl para algunos, simplemente debe descomentar la lnea de dicha extensin en
php.ini o si te encuentras con wamp slo ve a las extensiones en el cono de la barra de
procesos de este programa y habiltalo.
La lnea que Ud. debera descomentar en php.ini es la siguiente.
extension=php_openssl.dll
Realizado esto ser necesario reiniciar el servidor web y reintentar nuevamente la
instalacin de Composer y luego tendremos todo listo para empezar con Laravel.
CREACIN DEL PROYECTO SOBRE LARAVEL VA COMPOSER.

Ahora, una vez tenemos instalado Composer podremos crear fcilmente nuestro proyecto
sobre Laravel. Para esto simplemente abriremos "cmd" y luego nos ubicaremos en la
carpeta "www" de wamp en caso se tenga instalado este o Ud. deber acceder a la
carpeta donde se debe alojar sus proyectos web dentro de su servidor.

Una vez nos encontramos en la carpeta de los proyectos web para PHP crearemos
nuestro proyecto sobre Laravel con el siguiente comando donde APPCURSOLARAVEL
viene a ser el directorio principal de todo nuestro proyecto.
composer create-project laravel/laravel APPCURSOLARAVEL --prefer-dist
Luego de haber introducido el comando anterior en "cmd" se crear el proyecto en la
carpeta actual con el nombre de APPCURSOLARAVEL. Esto pudo haber demorado
algunos minutos siendo variante el tiempo segn la velocidad de internet que Ud. tenga.
Si todo sali bien al crear nuestro proyecto, la ventana de "cmd" debera haber quedado
parecido o igual a la siguiente imagen.

Ahora slo falta que probemos que nuestro proyecto sobre Laravel est corriendo
satisfactoriamente. Para esto tenemos que ir a un navegador web y poner lo siguiente en
la barra de direcciones.
http://localhost/APPCURSOLARAVEL/public/
Tenga en cuenta que para que funcione debe estar iniciado nuestro servidor web. Si todo
se encuentra bien debera mostrarse lo siguiente.

Como pudo ver, con la serie de pasos anteriores pudimos instalar Laravel y adems
creamos nuestro primer proyecto en el cual trabajaremos en los siguientes post para
adentrarnos un poco al mundo del framework Laravel de PHP.
Sin ms que decir me despido y espero puedan hacer comentarios y recomendar el tema.

LARAVEL: CONFIGURACIN BSICA

Antes de seguir con los ejemplos de desarrollo sobre Laravel, veremos como realizar una
configuracin simple cambiando algunos parmetros que son importantes para poder
iniciar
en
nuestra
aplicacin
sobre
este
Framework.
Tengamos en cuenta que lo que se hace en este post ser algo muy bsico para
concentrarnos posteriormente en otros ejemplos y de esta manera iremos cambiando ms
adelanto otras configuraciones que sean necesarias segn los mdulos que vayamos
usando
dentro
de
Laravel.
Vea el ejemplo en GitHub

Procedimiento:

Custom Search

Las configuraciones lo haremos en un archivo llamado "app.php" para este primer caso,
entonces debemos ubicarnos en dicho archivo lo cual lo encontraremos dentro del
proyecto ubicado en.

Una vez nos encontremos dentro del archivo empezaremos con la "Configuracin Local
de la Aplicacin". Para esto ubicamos la siguiente lnea.

'locale' => 'en',

y lo cambiamos por la siguiente.

'locale' => 'es',

Con lo anterior estaremos realizando la configuracin local para el proveedor de


traduccin dentro de nuestra aplicacin.

Ahora veamos otro aspecto muy importante para la cuestin de seguridad.

Para esto ubiquemos la siguiente lnea.

'key' => 'F7StjuPCmn30MacizLEA4KRj0fK2jNCE',

Tenga en cuenta que aquella lnea es la que se usa para las encriptaciones manejadas
por Laravel, as que si Ud. desea puede cambiar la cadena asignada a "key" lo cual por
defecto para mi caso est con "F7StjuPCmn30MacizLEA4KRj0fK2jNCE". Tambin debe
fijarse que es muy importante que se encuentre con una cantidad de 32 caracteres para
mantener una seguridad ptima dentro de nuestra aplicacin.

Por otro lado si se desea lo pueden dejar tal cual est ya que esa cadena se crea
aleatoriamente por la entropa generada al crear el proyecto.

Por ltimo realicemos la "Configuracin de la Zona Horaria", para esto ubiquemos la


siguiente lnea.

'timezone' => 'UTC',

Aqu haremos el cambio para efectuar nuestra configuracin de zona horaria.

Esto puede variar segn a donde nos encontremos ubicados ya que tiene que ver con la
hora que nos dar el sistema lo que vara segn la ubicacin.

Para mi caso que estoy en Per, pondr lo siguiente.

'timezone' => 'America/Lima',

Con la lnea anterior estaramos terminando nuestra configuracin bsica para poder
empezar a realizar los ejemplos manejando directamente nuestra aplicacin sin ningn
percance que se pueda presentar. Sin embargo se debe tener en cuenta que existen
muchas otras configuraciones las cuales iremos modificando segn lo vayamos a
necesitar.

Luego de realizar todos los pasos anteriores, podemos probar nuestra aplicacin y
debera seguir corriendo de la misma forma que en el post anterior. Esto lo hacemos
simplemente poniendo en la barra de direcciones de nuestro navegador, lo siguiente.

http://localhost/APPCURSOLARAVEL/public/

Si todo se hizo bien debera correr la aplicacin sin ningn problema mostrando una
imagen de Laravel.

En el siguiente post ya estarmos empezando con nuestro ansiado "Hola Mundo"


Explicando un poco sobre la estructura del Framework y las funcionalidades que tiene
este.
Sin ms que decir me despido y espero puedan hacer comentarios y recomendar el tema.

LARAVEL: ESTRUCTURA DEL PROYECTO

Continuando con el tema de Laravel, ahora tenemos que entender como es que
estructura el framework nuestro proyecto lo cual conlleva entender el patrn de
arquitectura
Modelo
Vista
Controlador
(MVC).
Dicho lo anterior primero procederemos a entender las carpetas ms importantes
disponibles en nuestro proyecto con lo que interactuaremos constantemente para as
posteriormente realizar el "Hola Mundo" pero ya entendiendo muy bien el procedimiento
de
desarrollo
sobre
Laravel.
Vea el ejemplo en GitHub

Procedimiento:

Custom Search

Primero veamos una imagen general de nuestro proyecto donde especificaremos


posteriormente el contenido de las carpetas ms importantes del mismo.

Vase que nuestro proyecto viene a ser "APPCURSOLARAVEL" dentro de lo cual


disponemos de la carpeta "app" que ser nuestra carpeta donde haremos mayores
cambios, aqu agregaremos nuevos archivos que sern para trabajar con la parte del
diseo visual de nuestra aplicacin "Vista", la lgica de negocios y quien se encargue de
derivar cada peticin "Controlador", el manejo de la persistencia de datos "Modelo" y por
ltimo el control de acceso a rutas dentro de nuestra aplicacin.
Dicho lo anterior, de forma general mencionaremos alguna de las carpetas y archivos ms
recurridos
que
se
encuentran
dentro
de
la
carpeta
"app".
config
Esta es la carpeta donde podremos ubicar todos los archivos de configuracin de nuestra
aplicacin, as como ya lo habamos hecho en el post anterior; como tambin podremos
configurar la conexin a nuestra base de datos, las sesiones, el envo de correo
electrnico,
la
autenticacin
de
usuarios
y
mucho
ms.

controller
Esta carpeta viene a ser donde se almacenan todos los controladores de nuestra
aplicacin los cuales se encargan de interactuar con el modelo, de renderizar vistas y
lgicamente
manejar
la
capa
de
negocio.
Para entender mejor esta parte y las siguientes carpetas que se definirn; es necesario
leer sobre el patrn de arquitectura modelo vista controlador lo cual lo puede encontrar
fcilmente
en
google.
models
Saltando un poco en las carpetas ahora nos encontramos con "models". Es donde se
tendr los modelos o tambin conocidos como entidades en otros lenguajes, lo cual se
encarga de persistir la informacin basado en las tablas de la base de datos que rastrea
esta.
En otras palabras ms simples sera que es necesario crear un archivo de modelo para
cada
tabla
de
la
base
de
datos
respectivamente.
views
Ahora nos encontramos con la carpeta de las vistas; aqu es donde tendremos que
codificar todo nuestro cdigo HTML que ser cada pgina que queramos tener en nuestra
aplicacin web. Tenga en cuenta que tambin es necesario que interactuemos con cdigo
PHP para cargar informacin de la base de datos u otras funcionalidades importantes de
procesamiento, sin embargo, para esto tendremos el motor de plantillas "Blade" lo cual
hace que sea ms limpio nuestro cdigo HTML evitando el mtodo intrusivo clsico de
PHP
nativo.
filters.php
Este es un archivo muy importante para interceptar cualquier peticin http. Aqu podremos
lanzar cualquier proceso antes o despus de la peticin realizada.
Piense en restringir acceso a ciertas url's segn se tenga o no una sesin iniciada, pues
justamente para esos casos nos valdr mucho este archivo en sus funciones "before" y
"after".
routes.php
Este es un archivo muy importante donde vamos a definir cada acceso a los diferentes
"action" de nuestro controllador (Cdigo que renderiza la vista). Aqu tendremos que
escribir cada acceso restringiendo o admitiendo las peticiones que vengan a estos, ya sea
de
tipo
get
o
post.

Con esto podremos definir si queremos que un "action" de cierto controlador que
renderizar
una
vista
slo
permita
peticiones
get,
post
o
ambos.

Ahora que definimos las carpetas ms usadas dentro de "app", slo haremos mencin a
la carpeta "public" que se encuentra a la misma altura de la carpeta "app".
Esta carpeta "public" es donde pondremos todos nuestros archivos pblicos en la
aplicacin lo cual no requiere de un nivel avanzado de seguridad. Unos cuantos casos
podran
ser
archivo
con
contenido
como.

Javascript
Hojas de estilo
Imgenes

Claro que no nos limitamos a esto, pero supongo que ya se entendi la idea.

Sin ms que decir me despido y espero puedan hacer comentarios y recomendar el tema.
LARAVEL: HOLA MUNDO

En este post, despus de


realizaremos nuestro primer
explicando donde es que
modificaciones
para

haber visto ciertos aspectos bsicos de Laravel, por fin


"Hola Mundo". Esto lo haremos de una forma muy sencilla
tenemos que crear el archivo "index" haciendo ciertas
que
esto
funcione
de
forma
correcta.

Sin

se

ms

que

decir

les

deja

con

el

ejemplo

continuacin.

Vea el ejemplo en GitHub

Procedimiento:

Custom Search

Lo primero que vamos a hacer es limpiar nuestro proyecto de ciertos archivos de ejemplo
que nos dej al crear dicho proyecto. Esto con el fin de no generar confusin al momento
de
trabajar
con
nuestros
propios
archivos.
Primero borramos la carpeta "emails" y el archivo "hello.php" ubicado
en "APPCURSOLARAVEL/app/views/"; estos archivos slo son de ejemplo para nuestras
vistas iniciales lo cual preferimos borrarlo para entender mejor cada aspecto que
realicemos en los manuales, as mismo, esto ser necesario al crear cualquier proyecto
ya que seran "Archivos Basura" lo que estara ah sin ninguna razn.
Posteriormente
borramos
el
archivo
"User.php"
ubicado
en "APPCURSOLARAVEL/app/models/". Este archivo viene a ser quien se encarga de
mapear la informacin a nuestra base de datos, as tambin ser donde pasemos ciertos
parmetros para rastrear la tabla y definir algn tipo de restriccin como el nombre de la
tabla,
el
primary
key,
los
posibles
timestamps,
etc.
Por
ltimo
borraremos
el
archivo
"HomeController.php"
que
se
ubica
en "APPCURSOLARAVEL/app/controllers/". Este viene a ser el archivo que maneja la
lgica del negocio, entre otras cosas; pues ya se habl de tal en el post anterior.
Habiendo realizado todo lo anterior tendremos limpio nuestro proyecto de los archivos que
no ser necesario para el desarrollo de nuestra aplicacin, al menos as ser con las
partes
que
interactuaremos
con
mayor
frecuencia.
En este punto se explicar paso a paso como debemos realizar el proceso para crear
nuevas vistas haciendo uso de sus controladores, las rutas y los posibles modelos que
sean necesarios posteriormente. Entonces seguimos con nuestro ansiado "Hola Mundo".
Primero fijmonos que es lo que pasa si accedemos a nuestra aplicacin desde el
navegador.

Si ponemos en este momento "http://localhost/APPCURSOLARAVEL/public/" en la barra


de navegacin de nuestro navegador, veremos que sale lo siguiente.

Ahora, por qu sale lo anterior?. Esto se debe a que acabamos de borrar todas las vistas
incluida la vista a la que apuntaba nuestro proyecto al iniciarse. Por otro lado el mensaje
que sale no nos ayuda mucho porque simplemente menciona que algo sali mal y pues
esto tambin se debe a que nuestro proyecto se encuentra actualmente en modo de
produccin. Si a algunos les sale otra ventana con muchas letras, no vayan a
desesperarse que ser lo que ahora buscaremos que nos salga a nosotros, y por qu
esto? porque queremos ver nuestra aplicacin en modo de depuracin donde ser ms
fcil identificar el tipo de error que este saliendo al lanzar cierto proceso. Por ejemplo, en
este caso debera decirnos que la vista no existe, la ruta no es la correcta o algo similar
con lo que reducira nuestro tiempo empleado para corregir el error.
Para llevar nuestra aplicacin al modo de depuracin debemos hacer un cambio en el
archivo "app.php" ubicado en "APPCURSOLARAVEL/app/config/". Entonces una vez
dentro
del
archivo
ubicamos
la
siguiente
linea.
'debug'
y

el

'debug'

=>
valor

que

est

en

"false"
=>

false,
lo

cambiamos

"true".
true,

Habiendo
realizado
este
cambio
volvemos
a
entrar
a "http://localhost/APPCURSOLARAVEL/public/" en nuestro navegador. Ahora veremos
que sale lo siguiente.

Como pueden ver el mensaje de error es "View [hello] not found" o simplemente pues nos
indica que la vista "hello" no a sido encontrado y esta es justamente la vista que borramos
hace un momento. Como pueden ver, ahora si en el modo de depuracin nos ayuda a
encontrar fcilmente los errores que existen en nuestro proyecto, sin embargo, no olviden
que cuando lo lancen a produccin dicha lnea "'debug' => true" deben volver a cambiarlo
a false para no presentar ventanas tediosas al cliente que manipule nuestro sistema.
Habiendo visto los modos de produccin y depuracin de nuestra aplicacin, ahora
tendremos que crear el archivo "index.php" dentro de nuestras vistas (La carpeta views
dentro de la carpeta app) donde pondremos nuestro primer cdigo ruteado y manejado
respectivamete desde su controlador. Dentro de ese archivo "index.php" insertaremos
todo el cdigo que podemos ver a continuacin.
?
1

<!doctype html>

<html lang="es">

<head>

4
5
6
7
8
9

<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h1>Hola mundo desde Laravel</h1>
</body>
</html>

10
Una vez realizado lo anterior, ahora tenemos que crear el controlador con el nombre
"IndexController.php" (Dentro de la carpeta controllers ubicado en la carpeta app del
proyecto) y posteriormente pondremos el siguiente cdigo en dicho archivo.
?
1

<?php

class IndexController extends BaseController

public function actionIndex()

{
return View::make('/index');

6
}

7
8
9

}
?>

Como pueden ver, el archivo anterior contiene una clase que hereda de "BaseController"
lo cual haremos para todos nuestros controladores, as mismo vean que existe una
funcin llamada "actionIndex" lo cual ser la funcin que se ejecuta antes de renderizar a
la
vista
"index.php".
Fjese tambin que retornamos "View::make('/index')" y esto viene a ser la vista que
estara
renderizando
la
funcin.
No es necesario poner de forma completa la direccin de la vista, simplemente lo
haremos suponiendo que nuestro punto de partida viene a ser la carpeta "views" que es
de donde toma como referencia el controlador para dirigirse a su vista respectiva.
Si en este punto probamos acceder a nuestra aplicacin desde el navegador, veremos
que an sigue fallando, y esto ser porque an falta un paso el cual ser el siguiente.
Vamos al archivo de las rutas de nuestra aplicacin el cual viene a ser "routes.php"
ubicado en la carpeta "app". Aqu veremos el siguiente cdigo.
?
1

<?php

2
3

/*

|--------------------------------------------------------------------------

5
6

| Application Routes
|--------------------------------------------------------------------------

| Here is where you can register all of the routes for an application.

| It's a breeze. Simply tell Laravel the URIs it should respond to

10

| and give it the Closure to execute when that URI is requested.

11

12

*/

13
14

Route::get('/', function()

15

16
17

return View::make('hello');
});

Como puede ver en la parte anterior, existe cierto cdigo que es necesario para rutear el
acceso a cada vista que vayamos creando y pues verificaremos que exista una ruta para
la direccin "/" que viene a ser la raiz de nuestro proyecto equivalente
a "http://localhost/APPCURSOLARAVEL/public/" en la barra de direcciones del navegador;
pero fjense que est apuntando a la vista "hello" lo que se recibe en una funcin annima
como segundo parmetro del mtodo get el cual era la vista que borramos para limpiar
nuestro proyecto por lo que ser necesario cambiar dicho cdigo apuntando a
"actionIndex" del controllador "IndexController.php" quedando de la siguiente forma
(Tambin borr el comentario lo cual no afecta pero esto lo hago para ahorrarnos espacio
en la visualizacin del cdigo).
?
1

<?php

2
3

Route::get('/', 'IndexController@actionIndex');

Vea en el cdigo anterior que reemplazamos la funcin del segundo parmetro del
mtodo "get" por una cadena "IndexController@actionIndex". Muchos se preguntarn
porque hacemos esto. Si se dan cuenta la funcin annima era muy parecida a la funcin
que disponemos en el controlador lo cual renderiza a la vista, sin embargo, de la forma
anterior con una funcin annima lo que se haca era renderizar a la vista desde el mismo
archivo "routes.php" pero ahora lo que hace routes es apuntar al "actionIndex" del
controlador "IndexController" quien posteriormente se encargar de renderizar la vista con
lo que estaramos manejando de mejor manera nuestro cdigo y respetando el patrn de

arqutiectura

MVC.

Habiendo realizado todos los pasos anteriores, ahora podemos probar nuestra aplicacin
accediendo
en
la
barra
de
direcciones
de
nuestro
navegador
a "http://localhost/APPCURSOLARAVEL/public/" con lo que veremos el resultado final de
lo que acabamos de hacer.

Como pueden ver el post fue un poco largo pero esto se extendi porque tambin
limpiamos nuestro proyecto de archivos que no usaremos en siguientes ejemplos. Por
otro lado pudimos realizar nuestro primer "Hola Mundo" desde Laravel que si analizan
detenidamente dicho procedimiento es muy sencillo de realizar con lo que se estara
manteniendo
orden
y
seguridad
dentro
de
nuestra
aplicacin.
Sin ms que decir me despido y espero puedan hacer comentarios y recomendar el tema.
LARAVEL: RUTEO BSICO

Aprender a manejar correctamente las rutas de acceso en Laravel es necesario as como


en cualquier otro framework que se use para PHP como Zend, Synfony, Yii, etc.
El ruteo de acceso a vistas permite restringir y admitir peticiones ya sean tipos GET,
POST o ambos. As tambin sirve para restringir posibles peticiones no autorizadas segn
al
lugar
donde
se
quiera
acceder.
Sin

ms,

empezaremos

con

el

manejo

bsico

de

rutas

sobre

Laravel.

Vea el ejemplo en GitHub

Procedimiento:

Custom Search

Para este caso donde nos interesa ver los aspectos ms bsicos del ruteo sobre Laravel,
veremos 3 formas de hacer esto no siendo todos; sin embargo, sern los que ms
usemos
con
mayor
frecuencia
para
los
ejemplos
posteriores.
Ruteo
bsico
va
GET
Cuando creamos una ruta, nosotros podemos restringir si queremos que slo permita
peticiones GET o POST, para este caso el siguiente cdigo sera para que el ruteo slo
permita peticiones va GET.
?
1

Route::get('/nombrevista', function()

3
4

return 'Hola Mundo';


});

Como se puede ver en el cdigo anterior estamos usando la Clase "Route" y su mtodo
"get" donde como primer parmetro estaramos pasando la direccin de la vista a la cual

queremos acceder considerando dicha direccin como raiz a partir de la carpeta de vistas
de nuestro proyecto. Como segundo parmetro le mandamos una funcin la cual ser
quien gestione la peticin realizada y posteriormente tendr que renderizar la vista. En el
caso anterior slo retorna una cadena "Hola Mundo" lo cual se deber mostrar en el
navegador.
Ruteo
bsico
va
POST
Este caso sera muy parecido al anterior con una pequea diferencia la cual sera el
mtodo de la clase "Route" que se est usando que aqu ser "post". El ruteo para este
tipo de peticin vendra a ser de la siguiente forma.
?
1

Route::post('/nombrevista', function()

3
4

return 'Hola Mundo';


});

De esta manera estaramos restringiendo que la vista "nombrevista" slo sea accedida
mediante
peticiones
va
POST.
Ruteo
que
obvia
el
verbo
de
peticin
Ahora, qu pasa si quisiramos que nuestra ruta permita tanto va POST como GET?.
Para este caso slo tenemos que usar el mtodo "any" de la clase "Route", quien obviar
el verbo de peticin sin importar como venga dicha peticin. El cdigo de ruteo sera el
siguiente.
?
1

Route::any('/nombrevista', function()

3
4

return 'Hola Mundo';


});

Ruteo
bsico
que
pasa
por
el
controlador
En los 3 casos anteriores vimos como rutear nuestra peticin donde simplemente la
pasamos una funcin annima de forma directa en el segundo parmetro para que
gestione la peticin, sin embargo, existe otra manera con la que podemos especificar que
el ruteo mande al controlador de cierta vista para que este se encargue de gestionar todo
el proceso que debera ocurrir antes de renderizarse la vista o redireccionar a cualquier

otra.
Entonces veamos el cdigo que debera llevar ste, el cual es el siguiente.
?
1

Route::get('/', 'IndexController@actionIndex');

Vea en la lnea anterior que el primer parmetro se mantiene; en este caso estaramos
creando la ruta para la raiz de nuestro proyecto lo cual apunta a
"IndexController@actionIndex" lo cual viene a reemplazar la funcin annima que
habamos pasado en los casos anteriores, sin embargo, viene a ser prcticamente lo
mismo
con
ciertas
diferencias
mnimas.
Primero veamos que en la primer parte del segundo parmetro especificamos el nombre
del controlador donde se debe buscar, que en este caso es "IndexController". El caracter
intermedio que es "@" viene a ser el separador del controlador y su funcin a la cual debe
acceder en dicho controlador y por ltimo tenemos el nombre de la funcin al cual se
acceder en el controlador el cual viene a ser en este caso "actionIndex".
Si Ud. verifica en el cdigo fuente en el que trabajamos hasta este punto sobre nuestro
proyecto, podr ver que para esa ruta que creamos existe un controlador en la carpeta
"controller" y una vista en "views" respectivamente. Si an despus de esto necesita ms
mayor explicacin, sera bueno que acceda a los post anteriores de Laravel que ah es
donde fuimos creando ciertos archivos dentro de nuestro proyecto lo cual vendra a
explicar
el
comportamiento
de
lo
anteriormente
planteado.
Este vendra a ser el trato bsico con respecto a las rutas sobre Laravel, sin embargo, an
es necesario conocer ms sobre los controladores lo cual lo iremos viendo en post
siguientes dentro del blog; as como tambin ampliaremos en temas posteriores el
funcionamiento de las rutas con parmetros, con alias sobre las rutas y ms.
Sin ms que decir me despido y espero puedan hacer comentarios y recomendar el tema.
LARAVEL: CONTROLADORES

Un controlador viene a ser una clase que se encarga de gestionar todas las peticiones
realizadas por u cliente de una aplicacin, en este caso cumplir la funcin de interceptar
la peticin dentro de una vista en nuestra aplicacin, procesar cualquier operacin
impuesta por el desarrollador y por ltima pasar a renderizar la vista.
En teora es una buena prctica tener un controlador por cada tabla en la base de datos y
dicho controlador atender a todas las vistas que requiera la interaccin de datos con
dicha
tabla.
Vea el ejemplo en GitHub

Procedimiento:

Custom Search

Para agregar un controlador a nuestro proyecto de Laravel, debemos dirigirnos a la


carpeta "controllers" dentro de "app", una vez nos encontremos ah slo hace falta crear
un archivo. Para nuestro caso ser "UsuarioController.php" y dentro de ese archivo
pondremos el siguiente cdigo.

?
1
2
3
4

<?php
class UsuarioController extends BaseController
{
public function actionRegistrar()

return View::make('/usuario/registrar');

8
9

public function actionEditar()

10

11

return View::make('/usuario/editar');

12

13
14

public function actionVer()

15

{
return View::make('/usuario/ver');

16
}

17
18

public function actionEliminar()

19

20

return View::make('/usuario/eliminar');

21
22
23

}
}
?>

24
Vea en el cdigo anterior que tenemos una clase que hereda de "BaseController" lo cual
ser necesario para todos los controladores que creemos en nuestro proyecto. As mismo,
fjense que tenemos 4 funciones pblicas que estaran haciendo la representacin de un
posible CRUD y tengan en cuenta que cada funcin ser quien atienda a una vista
respectivamente.

Fjese que cada funcin retorna "View::make('...');" y el parmetro que lleva vendra a ser
el nombre de la vista a donde apunta, por lo tanto debemos crear dichas vistas para poder
ver
que
realmente
funciona
nuestro
controlador.
Dicho lo anterior creamos las cuatro vistas "registrar.php, editar.php, ver.php y
eliminar.php" ubicado en una nueva carpeta que debemos crear con el nombre "usuario"
dentro de la carpeta "views".

Ahora pondremos los siguientes cdigos en cada vista creada para poder identificarlos al
momento
de
acceder
a
ellas.
registrar.php
?
1

<h2>Registrar</h2>

editar.php
?
1

<h2>Editar</h2>

ver.php
?
1

<h2>Ver</h2>

eliminar.php
?
1

<h2>Eliminar</h2>

Con lo anterior ya nos podemos dar cuenta que cuando renderizamos las vistas en el
controlador, lo que hacemos es acceder a las vistas que hemos creado y le pasamos el
parmetro "usuario/..." en los "View::make" porque primero debemos acceder a la carpeta
respectiva
las
vistas
dentro
de
"views".
Para finalizar el proceso de renderizacin basado en los controladores y las vistas
creadas, slo hace falta rutear nuestros archivos lo cual lo hacemos agregando el
siguiente cdigo a nuestras rutas.
?
1

Route::any('/usuario/registrar', 'UsuarioController@actionRegistrar');

Route::any('/usuario/editar', 'UsuarioController@actionEditar');

Route::any('/usuario/ver', 'UsuarioController@actionVer');

Route::any('/usuario/eliminar', 'UsuarioController@actionEliminar');

Si Ud. no sabe como manejar las rutas, se le recomienda visitar el siguiente enlace para
aprender
de
esto.
http://enlawebdekaaf.blogspot.com/2014/06/laravel-ruteo-basico.html
Una vez realizado todo esto, podemos probar si nuestros controladores estn trabajando
correctamente con la renderizacin de las vistas accediendo en el navegador a las
siguientes
direcciones
respectivamente.
http://localhost/APPCURSOLARAVEL/public/usuario/registrar
http://localhost/APPCURSOLARAVEL/public/usuario/editar

http://localhost/APPCURSOLARAVEL/public/usuario/ver
http://localhost/APPCURSOLARAVEL/public/usuario/eliminar
Vern que cada enlace retorna respectivamente cada una de las siguientes vistas.

Como puede ver el manejo de controladores sirve para poder interceptar las vistas y
realizar procesos, aunque en este caso slo estamos renderizando de forma directa,
podramos realizar cierta operacin antes de retornar las views en las funciones de
nuestros
controladores
tambin
llamadas
"action"
o
acciones.

Sin ms que decir me despido y espero puedan hacer comentarios y recomendar el tema.
LARAVEL: MOTOR DE PLANTILLA BLADE

Blade es el motor de plantallas para Laravel que sirve para trabajar con los componentes
HTML
sin
la
necesidad
de
escribir
cdigo
de
este
tipo.
Blade nos permite interactuar con muchos aspectos de lado del cliente de forma muy
sencilla y mucho ms rpida que las posibles formas tradicionales. A continuacin se deja
algunos
ejemplos
del
uso
de
Blade
sobre
Laravel.
Vea el ejemplo en GitHub

Procedimiento:

Custom Search

Para empezar con nuestro ejemplo primero tendremos que crear una vista con el nombre
"ejemploblade.blade.php" y esto lo tenemos que hacer en la carpeta "view" del proyecto.
Vea que es necesario asignarle al final del nombre del archivo ".blade.php" donde ".blade"
es el postfijo al nombre que hace posible que dicho archivo sea interpretado como un
contenedor de cdigo "Blade", sin esto no sera posible que se ejecute dicho cdigo y la
extensin ".php" indica el tipo de archivo lo cual no necesita explicacin.
Posteriormente debemos rutear la vista y crear su controlador respectivo para que se

pueda acceder mediante el navegador, esto ya no se explicar porque se hizo en post


anteriores. Si Ud. no conoce estos temas se recomienda visitar los siguientes enlaces.
http://enlawebdekaaf.blogspot.com/2014/06/laravel-ruteo-basico.html
http://enlawebdekaaf.blogspot.com/2014/06/laravel-controladores.html
Una vez tengamos la vista correctamente ruteada empezamos poniendo el siguiente
cdigo en "ejemploblade.blade.php".
?
1
2

{{Form::open(array('action' => array('IndexController@actionEjemploBlade'), 'method


{{Form::label('txtNombreCompleto', 'Nombre Completo')}}

3
4
5

{{Form::text('txtNombreCompleto')}}

6
7
8

{{Form::label('passContrasenia', 'Contrasea')}}

9
10
11

{{Form::password('passContrasenia')}}

12
13
14

{{Form::label('checkConocimiento', 'Temas que conozco')}}

15
16
17
18
19
20
21

{{Form::label('checkConocimientoJava', 'Java')}}

{{Form::checkbox('checkConocimiento', 'Java', false, array('id' => 'checkConocimie


{{Form::label('checkConocimientoCSharp', 'CSharp')}}

{{Form::checkbox('checkConocimiento', 'CSharp', false, array('id' => 'checkConocim


{{Form::label('checkConocimientoPhp', 'Php')}}

{{Form::checkbox('checkConocimiento', 'Php', false, array('id' => 'checkConocimien

22

{{Form::label('checkConocimientoNode', 'Node')}}

23

{{Form::checkbox('checkConocimiento', 'Node', false, array('id' => 'checkConocimie

24

{{Form::label('checkConocimientoRuby', 'Ruby')}}

25

{{Form::checkbox('checkConocimiento', 'Ruby', false, array('id' => 'checkConocimie

26
27
28

{{Form::label('radioSexo', 'Sexo')}}

29
30
31
32
33
34

{{Form::label('radioSexoM', 'Masculino')}}
{{Form::radio('radioSexo', 'Masculino', true, array('id' => 'radioSexoM'))}}
{{Form::label('radioSexoF', 'Femenino')}}
{{Form::radio('radioSexo', 'Femenino', false, array('id' => 'radioSexoF'))}}

35
36
37

{{Form::label('btnSubirArchivo', 'Subir archivo')}}

38
39
40

{{Form::file('btnSubirArchivo')}}

41
42

{{Form::label('selectPais', 'Pas')}}

43
44
45
46

{{Form::select('selectPais', array(
'peru' => 'Per',

47

'mexico' => 'Mxico',

48

'espania' => 'Espaa',

49

'venezuela' => 'Venezuela',

50

'chile' => 'Chile',

51

'colombia' => 'Colombia'))

52
53

}}

54
55
56

{{Form::macro('miCampo', function($id)

57

58

return "<input type='date' id='$id' name='$id'>";

59

})}}

60

{{Form::label('dateFechaNacimiento', 'Fecha de nacimiento')}}

61
62
63

{{Form::miCampo('dateFechaNacimiento')}}

64
65
66
67

{{Form::submit('Enviar formulario')}}
{{Form::close()}}

68
En el cdigo anterior se puede apreciar la facilidad con la que Ud puede insertar cdigo
HTML mediante blade aprovechando al mximo la funcionalidad de Laravel mediante su
poderoso
motor
de
plantillas.
El cdigo HTML generado sera el siguiente.
?
1
2

<form action="/APPCURSOLARAVEL/public/ejemploblade" method="post">


<label for="txtNombreCompleto">Nombre completo</label>

3
4
5

<input type="text" id="txtNombreCompleto" name="txtNombreCompleto">

6
7
8
9
10

<label for="passContrasenia">Contrasea</label>

11

<input type="text" id="passContrasenia" name="passContrasenia">

12
13
14

<label for="checkConocimiento">Temas que conozco</label>

15
16
17

<label for="checkConocimientoJava">Java</label>

18

<input type="checkbox" id="checkConocimientoJava" name="checkConocimiento">

19

<label for="checkConocimientoCSharp">CSharp</label>

20
21
22
23
24
25

<input type="checkbox" id="checkConocimientoCSharp" name="checkConocimiento">


<label for="checkConocimientoPhp">Php</label>
<input type="checkbox" id="checkConocimientoPhp" name="checkConocimiento">
<label for="checkConocimientoNode">Node</label>
<input type="checkbox" id="checkConocimientoNode" name="checkConocimiento">
<label for="checkConocimientoRuby">Ruby</label>
<input type="checkbox" id="checkConocimientoRuby" name="checkConocimiento">

26
27
28

<label for="radioSexo">Sexo</label>

29
30
31

<label for="radioSexoM">Masculino</label>

32

<input type="radio" id="radioSexoM" name="radioSexo" checked=true>

33

<label for="radioSexoF">Femenino</label>

34

<input type="radio" id="radioSexoF" name="radioSexo">

35
36
37

<label for="btnSubirArchivo">Subir archivo</label>

38

<input type="file" id="btnSubirArchivo" name="btnSubirArchivo">

39
40

41
42

<label for="selectPais">Pas</label>

43
44
45
46
47
48
49
50
51

<select name="selectPais" id="selectPais">


<option value="peru">Per</option>
<option value="mexico">Mxico</option>
<option value="espania">Espaa</option>
<option value="venezuela">Venezuela</option>
<option value="chile">Chile</option>
<option value="colombia">Colombia</option>
</select>

52
53
54
55

<label for="dateFechaNacimiento">Fecha de nacimiento</label>


<input type="date" id="dateFechaNacimiento" name="dateFechaNacimiento">

56
57
58
59

<input type="submit" value="Enviar formulario">


</form>

60
Como puede entenderse, es posible usar cualquier de los dos cdigos anteriores no
importa si es HTML nativo o mediante Blade, Laravel lo trabaja con toda normalidad,
depende a su preferencia Ud. puede hacer manejo de cualquiera de los dos y tambin
puede hacer las respectivas comparaciones en el ejemplo anterior si as lo desea para ver
cual
le
convendra
usar
segn
sus
habilidades.
Sin ms que decir me despido y espero puedan hacer comentarios y recomendar el tema.
LARAVEL: TEMPLATE O LAYOUT

Los Template son plantillas generales que podemos usar en Laravel as como en muchos
otros frameworks. Esto se da con la intencin de ahorrar tiempo de desarrollo en la parte
del diseo y podamos heredar de una misma plantilla para todas las vistas de una
aplicacin.
Vea el ejemplo en GitHub

Procedimiento:

Custom Search

Para trabajar con los Template de Laravel primero debemos tener en cuenta que se
maneja cdigo del motor de plantillas Blade por lo que es necesario asignar a la vista del
Template y a los mismos que heredarn este, la extensin ".blade.php". Para ms
informacin
sobre
el
motor
Blade
vea
el
siguiente
enlace.
http://enlawebdekaaf.blogspot.com/2014/06/laravel-motor-de-plantilla-blade.html

Dicho lo anterior, primero tendremos que crear en la carpeta de vistas el archivo


"template.blade.php" y aqu pondremos el siguiente cdigo.
?
1

<!doctype html>

<html lang="es">

<head>

4
5

<meta charset="UTF-8">
<title>Document</title>

6
7
8
9
10
11
12
13

{{HTML::style('css/cssTemplate.css')}}
</head>
<body>
<header>
<h1>Esta es la cabecera</h1>
</header>
<nav id="menuPrincipal">
<ul>

14

<li>{{HTML::linkAction('IndexController@actionIndex', 'Inicio')}}</li>

15

<li>{{HTML::linkAction('UsuarioController@actionRegistrar', 'Registrar usuario')

16

<li>{{HTML::linkAction('UsuarioController@actionVer', 'Ver usuario')}}</li>

17

<li>{{HTML::linkAction('UsuarioController@actionEditar', 'Editar usuario')}}</li

18

<li>{{HTML::linkAction('UsuarioController@actionEliminar', 'Eliminar usuario')}}

19

<li>{{HTML::linkAction('IndexController@actionEjemploBlade', 'Ejemplo de blade')

20
21
22
23
24
25
26
27

</ul>
</nav>
<section id="sectionCuerpoTemplate">
@yield('sectionCuerpo')
</section>
<footer>
En la Web de KAAF
</footer>
</body>

28
29

</html>

30
Como pueden ver en el cdigo anterior, es simple Html y un poco de los helper de
Laravel. Entonces lo que nos importa en este punto es la parte que dice
"@yield('sectionCuerpo')" que es donde se importar cada vista que herede este
Template. El resto del cdigo diferente al "@yield" es el que se ejecutar de forma
repetida
en
cualquier
vista
que
importe
a
este.
Ahora crearemos dentro de la carpeta public de nuestro proyecto una carpeta llamada
"css" y ah crearemos un archivo "cssTemplate.css" el cual tendr todos los estilos para
nuestro Template y ah escribiremos el siguiente cdigo.
?
1

h1

{
color: white;

3
4

5
6
7

footer
{
background-color: #EEEEEE;

box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.7);

9
10

padding: 7px;
}

11
12
13

header
{

14

background-color: #1570A6;

15

box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.7);

16

padding: 7px;

17

z-index: 1000;

18

19
20
21

#menuPrincipal ul

22

23

list-style: none;

24

margin: 0px;

25

padding: 0px;

26

27
28
29
30

#menuPrincipal li
{
display: inline-block;
}

31
32
33

#sectionCuerpoTemplate
{

34

background-color: #FFFFFF;

35

box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.7) inset;

36

min-height: 400px;

37

padding: 7px;

38

39
Una vez realizado slo tendremos que crear nuestros clientes para el Template y lo
haremos en la siguiente estructura.

Realizado esto, lgicamente es necesario crear sus respectivos controladores y rutas para
dichas vistas. Si Ud. no conoce sobre dichos temas se recomienda ver los post anteriores
ubicados
en
el
siguiente
enlace.
http://enlawebdekaaf.blogspot.com/p/laravel.html
Una vez hallamos realizado todos los pasos anteriores, slo faltara que en cada vista que
queramos heredar el Template agreguemos el cdigo que realice dicha herencia. El
siguiente cdigo es un ejemplo para el archivo "index.blade.php".
?
1

@extends('template')

2
3

@section('sectionCuerpo')

<b>Este es el cuerpo</b>

@stop

Una vez realizado lo anterior ya tendremos listo el Template heredado en "index". Para los
demas archivos se deber seguir el mismo proceso y dentro de @section('sectionCuerpo')
y @stop tendremos que poner todo el contenido que queremos que vara en nuestra vista.
Una vez realizado esto y los cambios respectivos para cada vista cliente del Template,
tendremos todo listo y cada parte de la aplicacin deber verse bajo el diseo general del
Template.
Para obtener el cdigo completo, Ud. puede descargarlo en la direccin de Git Hub de la
parte
superior
(Al
inicio
de
la
publicacin).
Para

dudas

consultas

puede

comentar

el

post.

Sin ms que decir me despido y espero puedan hacer comentarios y recomendar el tema.
LARAVEL: CRUD CON ELOQUENT PARTE 2-LISTAR USUARIOS

Aqu vemos la segunda parte del CRUD con Laravel y su ORM Eloquent.
Este post viene a ser algo muy corto ya que es muy simple la forma en que podemos
extraer la informacin de una tabla de nuestra base de datos mediante Eloquent de
Laravel. Veremos que esto se nos hace muy sencillo y agradable al momento de trabajar
por
el
cdigo
tan
limpio
y
entendible
que
se
maneja.
Vea el ejemplo en GitHub

Procedimiento:

Custom Search

Para listar los datos de un usuario, teniendo en cuenta que ya creamos en el post anterior
el modelo de TUsuario y tambin ya ruteamos la vista "ver.blade.php" slo tenemos que
hacer cambios muy pequeos y agregar un par de lineas en el controlador y una tabla
HTML
en
la
vista.
Primero debemos dejar el action "actionVer" del controlador "UsuarioController de la
siguiente manera.
?

public function actionVer()

$listaTUsuario=TUsuario::all();

4
return View::make('/usuario/ver', array('listaTUsuario' => $listaTUsuario));

5
6

Donde estamos haciendo uso del mtodo esttico "all()" para extraer toda la informacin
de la tabla "TUsuario" y en segunda instancia estamos enviando la variable donde se
almacen
esos
datos
a
la
vista.
Ahora slo tenemos que hacer lectura de la variable "listaTUsuario" en la vista,
recorriendo y mostrando todos los datos que obtuvo ste. Para eso dejaremos el archivo
"ver.blade.php" de la carpeta "usuario" de las "views" con el siguiente cdigo.
?
1

@extends('template')

2
3

@section('sectionCuerpo')

<h2>Ver</h2>

<table border="1">

6
7
8
9
10

<thead>
<th>ID</th>
<th>NOMBRE</th>
<th>APELLIDO</th>
<th>CORREO ELECTRNICO</th>
<th>CONTRASEA</th>

11

<th>FECHA DE NACIMIENTO</th>

12

<th>SEXO</th>

13

<th>FECHA DE REGISTRO</th>

14

<th>FECHA DE MODIFICACIN</th>

15

</thead>

16

<tbody>

17

@foreach($listaTUsuario as $value)
<tr>

18
19

<td>{{$value->idUsuario}}</td>

20

<td>{{$value->nombre}}</td>

21

<td>{{$value->apellido}}</td>

22

<td>{{$value->correoElectronico}}</td>

23

<td>{{$value->contrasenia}}</td>

24

<td>{{$value->fechaNacimiento}}</td>

25

<td>{{$value->sexo=='1' ? 'Masculino' : 'Femenino'}}</td>

26

<td>{{$value->fechaRegistro}}</td>

27

<td>{{$value->fechaModificacion}}</td>

28
29
30
31
32

</tr>
@endforeach
</tbody>
</table>
@stop

33
Como puede ver en el cdigo anterior, slo tenemos una tabla y estamos recorriendo en
un foreach mediante blade los datos recuperados en el controlador que fueron pasados
hacia
la
vista.
Si realizamos todo lo anterior de forma correcta, deberamos tener lo siguiente al acceder
a la vista "ver.blade.php".

LARAVEL: CRUD CON ELOQUENT PARTE 3-EDITAR DATOS DE USUARIO

Continuando con nuestro CRUD sobre Laravel, ahora veremos la forma de editar
informacin. Esto es algo realmente muy sencillo bajo el manejo de su ORM Eloquent.
Realizaremos este ejemplo y podrn ver que son unas cuantas lneas de cdigo muy
sencillas de entender y fcil de darle soporte en cualquier momento.
Vea el ejemplo en GitHub

Procedimiento:

Custom Search

Primero debemos tener listo la ruta en el archivo "routes.php" lo cual deber recibir un
parmetro que ser el "Id" del usuario a editar y este ser opcional lo cual quedar de la
siguiente manera.
?
1

Route::any('/usuario/editar/{idUsuario?}', 'UsuarioController@actionEditar');

Ahora que ya tenemos lista la ruta, tendremos que crear el enlace que enviar a su action
mediante un botn que al darle clic llamar a una funcin la cual recibir como parmetro
el "Id" del usuario que se quiere editar. Esto lo haremos en el archivo "ver.blade.php" ya
habindolo trabajando antes tendremos que dejarlo de la siguiente forma, donde
incluimos la funcin necesario sobre Javascript.
?
1

@extends('template')

2
3

@section('sectionCuerpo')

<h2>Ver</h2>

<table border="1">

6
7
8
9
10

<thead>
<th>ID</th>
<th>NOMBRE</th>
<th>APELLIDO</th>
<th>CORREO ELECTRNICO</th>
<th>CONTRASEA</th>

11

<th>FECHA DE NACIMIENTO</th>

12

<th>SEXO</th>

13

<th>FECHA DE REGISTRO</th>

14

<th>FECHA DE MODIFICACIN</th>

15
16
17
18

<th></th>
</thead>
<tbody>

19

@foreach($listaTUsuario as $value)

20

<tr>

21

<td>{{$value->idUsuario}}</td>

22

<td>{{$value->nombre}}</td>

23

<td>{{$value->apellido}}</td>

24

<td>{{$value->correoElectronico}}</td>

25

<td>{{$value->contrasenia}}</td>
<td>{{$value->fechaNacimiento}}</td>

26

<td>{{$value->sexo=='1' ? 'Masculino' : 'Femenino'}}</td>

27

<td>{{$value->fechaRegistro}}</td>

28

<td>{{$value->fechaModificacion}}</td>

29

<td><input type="button" id="{{$value->idUsuario}}" value="Editar" onclick="edi

30

</tr>

31
32

@endforeach
</tbody>

33

</table>

34

<script>

35

function editarUsuario(idUsuario)

36

{
window.location.href="/APPCURSOLARAVEL/public/usuario/editar/"+idUsuario;

37
38
39
40

}
</script>
@stop

41
Como se puede ver, ah tenemos un botn en la tabla que enva al "actionEditar" del
controlador "UsuarioController" y para que todo funcione bien, el controlador "actionEditar"
debe quedar de la siguiente forma.

?
1
2
3

public function actionEditar($idUsuario=null)


{
if($_POST)

TUsuario::where('idUsuario', '=', Input::get('txtIdUsuario'))->update

array

'nombre' => Input::get('txtNombre'),

10

'apellido' => Input::get('txtApellido'),

11

'correoElectronico' => Input::get('txtCorreoElectronico'),

12

'fechaNacimiento' => Input::get('txtFechaNacimiento'),

13

'sexo' => Input::get('radioSexo')


)

14

);

15
16

return Redirect::to('/usuario/ver');

17

18
19

$tUsuario=TUsuario::find($idUsuario);

20
21
22

return View::make('/usuario/editar', array('tUsuario' => $tUsuario));


}

23
Para finalizar, nuestro archivo "editar.blade.php" de las vistas de usuario debe quedar de
la siguiente manera.
?
1

@extends('template')

2
3

@section('sectionCuerpo')

<h2>Editar</h2>

<form action="/APPCURSOLARAVEL/public/usuario/editar" method="post">

<input type="hidden" id="txtIdUsuario" name="txtIdUsuario" value="{{$tUsuario->idUs

<label for="txtNombre">Nombre</label>

8
9
10

<input type="text" id="txtNombre" name="txtNombre" value="{{$tUsuario->nombre}}">

11
12
13

<label for="txtApellido">Apellido</label>

14
15
16

<input type="text" id="txtApellido" name="txtApellido" value="{{$tUsuario->apellido

17
18
19

<label for="txtCorreoElectronico">Correo electrnico</label>

20
21
22

<input type="text" id="txtCorreoElectronico" name="txtCorreoElectronico" value="{{$

23
24
25

<label for="txtFechaNacimiento">Fecha de nacimiento</label>

26
27
28

<input type="date" id="txtFechaNacimiento" name="txtFechaNacimiento" value="{{$tUsu

29
30
31
32
33

<label>Sexo</label>

34

<label for="radioSexoM">Masculino</label>

35

<input type="radio" id="radioSexoM" name="radioSexo" value="1" {{$tUsuario->sexo==1

36

<label for="radioSexoF">Femenino</label>

37

<input type="radio" id="radioSexoF" name="radioSexo" value="0" {{$tUsuario->sexo==0

38
39
40
41
42

<input type="submit" value="Guardar cambios">


</form>
@stop

Habiendo realizado todo lo anterior, tendremos listo la edicin de usuarios mediante


Laravel y su ORM Eloquent.
LARAVEL: CRUD CON ELOQUENT PARTE 4 (FINAL)-ELIMINAR USUARIO

Aqu les traigo la ltima publicacin con respecto al CRUD con Laravel y su ORM
Eloquent donde veremos la forma de eliminar un registro de la base de datos.
Hacer esto es muy sencillo ya que slo requiere realizar una simple consulta por el
"idUsuario" y posteriormente acceder al mtodo "delete" de Eloquent.
Vea el ejemplo en GitHub

Procedimiento:

Custom Search

Lo primero que debemos tener listo es la ruta con el paso de un parmetro el cual ser el
Id del usuario para eliminar este.
?
1

Route::get('/usuario/eliminar/{idUsuario}', 'UsuarioController@actionEliminar');

Ahora debemos agregar el botn eliminar en nuestra tabla de lista de usuario y crear la
funcin respectiva sobre Javascript para que nos mande al controlador que se encargar
de realizar el procedimiento respectivo. Habiendo dicho esto, nuestra vista "ver.blade.php"
de usuario debera quedar de la siguiente manera.
?
1

@extends('template')

2
3

@section('sectionCuerpo')

<h2>Ver</h2>

<table border="1">

6
7
8
9
10

<thead>
<th>ID</th>
<th>NOMBRE</th>
<th>APELLIDO</th>
<th>CORREO ELECTRNICO</th>
<th>CONTRASEA</th>

11

<th>FECHA DE NACIMIENTO</th>

12

<th>SEXO</th>

13

<th>FECHA DE REGISTRO</th>

14

<th>FECHA DE MODIFICACIN</th>

15

<th></th>
<th></th>

16

</thead>

17

<tbody>
@foreach($listaTUsuario as $value)

18

<tr>

19

<td>{{$value->idUsuario}}</td>

20

<td>{{$value->nombre}}</td>

21

<td>{{$value->apellido}}</td>

22

<td>{{$value->correoElectronico}}</td>

23

<td>{{$value->contrasenia}}</td>

24

<td>{{$value->fechaNacimiento}}</td>

25

<td>{{$value->sexo=='1' ? 'Masculino' : 'Femenino'}}</td>

26

<td>{{$value->fechaRegistro}}</td>

27

<td>{{$value->fechaModificacion}}</td>

28

<td><input type="button" id="{{$value->idUsuario}}" value="Editar" onclick="edi

29

<td><input type="button" id="{{$value->idUsuario}}" value="Eliminar" onclick="e


</tr>

30

@endforeach

31
32
33
34
35
36
37

</tbody>
</table>
<script>
function editarUsuario(idUsuario)
{
window.location.href="/APPCURSOLARAVEL/public/usuario/editar/"+idUsuario;
}

38
39
40

function eliminarUsuario(idUsuario)
{

41
42
43
44
45

window.location.href="/APPCURSOLARAVEL/public/usuario/eliminar/"+idUsuario;
}
</script>
@stop

46
47
48
Por ltimo para que funcione todo esto slo hace falta agregar el cdigo del "action" en el
controlador, donde realizaremos una consulta por "primary key" en este caso por
"idUsuario" y luego haremos uso del mtodo "delete" de Eloquent para borrar el registro.
El "actionEliminar" estara quedando de la siguiente manera.
?
1

public function actionEliminar($idUsuario=null)

$tUsuario=TUsuario::find($idUsuario);

4
$tUsuario->delete();

5
6

return Redirect::to('/usuario/ver');

7
8

Habiendo realizado todos los pasos anteriores, ya debera funcionar nuestra accin de
eliminar.
Como pudieron ver, siendo este el ltimo post sobre el CRUD en Laravel, es muy sencillo
ya que el ORM Eloquent nos facilita mucho el trabajo y acorta los tiempos de desarrollo.
LARAVEL: ENCRIPTACIN Y DESENCRIPTACIN DE CONTRASEAS

En este post aprenderemos a como realizar encriptaciones de cadenas de texto


(Contraseas) en Laravel. As mismo tambin veremos la manera de desencriptar para
realizar posibles validaciones de inicio de sesin en caso tengamos contraseas
guardadas en la base de datos de forma encriptada.

Procedimiento:

Custom Search

Para este caso debemos usar la clase Crypt de Laravel lo cual nos ofrece una manera
sencilla de realizar la encriptacin de contraseas haciendo uso de sus mtodos crypt y
decrypt
para
encriptar
o
desencriptar
respectivamente.
El

cdigo

route.php
?
1
2

<?php

para

el

ejemplo

lo

tenemos

continuacin.

Route::any('/', 'IndexController@actionIndex');

IndexController.php
?
1
2
3
4

<?php
class IndexController extends BaseController
{
public function actionIndex()

if($_POST)

if(Input::has('txtContrasenia'))

10

$contraseniaEncriptada=Crypt::encrypt(Input::get('txtContrasenia'));

11
12

return View::make('index', ['contraseniaEncriptada' => $contraseniaEncriptada]);


}

13
14
15

if(Input::has('txtContraseniaEncriptada'))

16

$contraseniaDesencriptada=Crypt::decrypt(Input::get('txtContraseniaEncriptada')

17
18

return View::make('index', ['contraseniaDesencriptada' => $contraseniaDesencript

19
}

20

21
22

return View::make('index');

23
24
25
26

}
}
?>

index.blade.php
?
1
2
3
4
5
6
7
8

<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form action="/APPENLAWEBDEKAAF/public/" method="post">

<label for="txtContrasenia">Ingrese la contrasea a encriptar</label>

10

<input type="text" id="txtContrasenia" name="txtContrasenia">

11

<input type="submit" value="Encriptar">

12

</form>

13
14
15
16
17
18
19
20
21
22

<form action="/APPENLAWEBDEKAAF/public/" method="post">

<label for="txtContraseniaEncriptada">Ingrese la contrasea a desencriptar</label


<input type="text" id="txtContraseniaEncriptada" name="txtContraseniaEncriptada">
<input type="submit" value="Desencriptar">
</form>

<b>{{{$contraseniaEncriptada or ''}}}</b>
<b>{{{$contraseniaDesencriptada or ''}}}</b>
</body>
</html>

23
Como puede ver, es muy sencillo realizar el manejo de encriptacin sobre Laravel con lo
que podemos poner ms seguras nuestras aplicaciones al momento de querer guardar
informacin privada.
LARAVEL: EXPORTAR DATOS A EXCEL

En este post veremos como realizar exportacin de datos a un formato excel desde
Larave. Slo necesitamos instalar una serie de clases para poder usarlas posteriormente
de una forma muy sencilla.

Procedimiento:

Custom Search

Lo primero que debemos hacer ser instalar lo necesario, agregando los requerimientos
en el archivo composer.json.
?
1

"require": {

"laravel/framework": "4.2.*",

"maatwebsite/excel": "~1.2.1"

},

Seguidamente nos ubicamos en el shell (Cmd o terminal) y ejecutamos el


comando composer update para que pueda actualizarse e instalarse todos los

requerimientos

del

proyecto.

Posteriormente debemos agregar el proveedor y el alias de acceso para la clase que


usaremos en nuestras exportaciones a excel siendo las siguientes sentencias tanto para
el
providers
como
para
el
aliases
respectivamente.
'Maatwebsite\Excel\ExcelServiceProvider',
--------------------------------------------------------'Excel' =>

'Maatwebsite\Excel\Facades\Excel',

Una vez realizado lo anterior, slo creamos la ruta necesaria y en un action de nuestro
controlador manejamos el cdigo para crear un archivo excel y descargarlo.
?
1

<?php

class IndexController extends BaseController

4
5
6
7
8
9

public function actionIndex()


{
Excel::create('Mi primer archivo excel desde Laravel', function($excel)
{
$excel->sheet('Sheetname', function($sheet)
{
$sheet->mergeCells('A1:C1');

10
11

$sheet->setBorder('A1:F1', 'thin');

12
13

$sheet->cells('A1:F1', function($cells)

14

15

$cells->setBackground('#000000');

16

$cells->setFontColor('#FFFFFF');

17

$cells->setAlignment('center');

18

$cells->setValignment('center');

19

});

20
21

$sheet->setWidth(array

22
23

24

'D' => '50'

25

26

);

27
$sheet->setHeight(array

28

29

'1' => '50'

30
)

31

);

32
33

$data=[];

34
35

array_push($data, array('Kevin', '', '', 'Arnold', 'Arias', 'Figueroa'));

36
37

$sheet->fromArray($data, null, 'A1', false, false);

38

});

39

})->download('xlsx');

40
41

//return View::make('index');

42

43

44

?>

45
Habiendo realizado todos los pasos anteriores, ya deberamos tener listo la exportacin
de datos a un archivo excel. Si quiere ms detalles de este post, vea el siguiente video.
LARAVEL: VISUALIZAR DATOS EN FORMATO PDF

En este post veremos como realizar visualizacin e impresin de datos sobre un formato
PDF desde Laravel. Slo necesitamos instalar el mdulo correspondiente para poder
usarlas posteriormente de una forma muy sencilla.

Procedimiento:

Custom Search

Lo primero que debemos hacer ser instalar lo necesario, agregando los requerimientos
en el archivo composer.json.
?
1

"require": {

"laravel/framework": "4.2.*",

"thujohn/pdf": "dev-master"

},

Seguidamente nos ubicamos en el shell (Cmd o terminal) y ejecutamos el


comando composer update para que pueda actualizarse e instalarse todos los

requerimientos

del

proyecto.

Posteriormente debemos agregar el proveedor y el alias de acceso para la clase que


usaremos en nuestras visualizaciones e impresiones sobre PDF siendo las siguientes
sentencias tanto para el providers como para el aliases respectivamente.
'Thujohn\Pdf\PdfServiceProvider',
--------------------------------------------------------'PDF' =>

'Thujohn\Pdf\PdfFacade',

Una vez realizado lo anterior, slo creamos la ruta necesaria y en un action de nuestro
controlador manejamos el cdigo para crear un archivo PDF.
?
1
2
3

<?php
class IndexController extends BaseController
{

public function actionIndex()

$miNombre='http://enlawebdekaaf.blogspot.com/';

7
8

$html = '<html><body>'

. '<p>Blog: '.$miNombre.'</p>'

10

. '</body></html>';

11
return PDF::load($html, 'A4', 'portrait')->show();

12
13

//return View::make('index');

14
}

15
16
17

}
?>

Habiendo realizado todos los pasos anteriores, ya deberamos tener listo la visualizacin
de datos sobre un archivo PDF. Si quiere ms detalles de este post, vea el siguiente
video.
LARAVEL: SESIONES PERSISTENTES Y SESIONES FLASH

Siguiendo con los temas de Laravel, ahora veremos como realizar el almacenamiento en
sesiones
de
Php
mediante
este
maravilloso
framework.
Veremos como usar sesiones persistentes en toda la aplicacin por el tiempo que
definamos y sesiones persistentes slo a una redireccin de pgina para posible envo de
mensajes en respuesta a cierta actividad, as mismo veremos el tema de cierre o
eliminacin de la sesin.

Procedimiento:

Custom Search

Para este ejemplo trabajaremos con cuatro vistas los cuales nos servirn para poder
visualizar y analizar el comportamiento de las sesiones normales, las sesiones flash y el
cierre
de
sesin.
Primero tendremos que crear las rutas de cada vista lo cual lo podemos ver a
continuacin.
?
1

<?php

2
3

Route::any('/', 'IndexController@actionIndex');

Route::any('/paginados', 'IndexController@actionPaginaDos');

Route::any('/paginatres', 'IndexController@actionPaginaTres');

Route::any('/paginacuatro', 'IndexController@actionPaginaCuatro');

Route::any('/cerrarsesion', 'IndexController@actionCerrarSesion');

Ahora veamos el cdigo del controlador que trabajar con todos los action anteriormente
definidos.
El IndexController debera quedar de la siguiente manera.
?
1

<?php

class IndexController extends BaseController

4
5

public function actionIndex()


{
if($_POST)

Session::put('miSesionTexto', Input::get('txtTexto'));

8
9

return View::make('index');

10

11
12
13

return View::make('index');
}

14
15

public function actionPaginaDos()

16

17

if($_POST)

18

19

Session::flash('miSesionFlash', Input::get('txtMiSesionFlash'));

20
21
return Redirect::to('/');

22

23
24

return View::make('paginados');

25

26
27

public function actionPaginaTres()

28

29

return View::make('paginatres');

30

31
32

public function actionPaginaCuatro()

33

{
return View::make('paginacuatro');

34
}

35
36

public function actionCerrarSesion()

37

38

Session::forget('miSesionTexto');

39
40

return View::make('index');

41
42
43

}
}
?>

44
45
Finalmente

creamos

index.blade.php
?

las

vistas

que

respondern

cada

action.

1
2
3
4
5
6
7
8

<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<ul>

<li><a href="/APPENLAWEBDEKAAF/public/">Pgina inicio</a></li>

10

<li><a href="/APPENLAWEBDEKAAF/public/paginados">Pgina dos</a></li>

11

<li><a href="/APPENLAWEBDEKAAF/public/paginatres">Pgina tres</a></li>

12

<li><a href="/APPENLAWEBDEKAAF/public/paginacuatro">Pgina cuatro</a></li>

13

</ul>

14

Mi Sesin: {{Session::get('miSesionTexto', 'No existe sesin')}} | <a href="/APPEN

15
16
17
18
19
20
21
22
23

Mi Sesin flash: {{Session::get('miSesionFlash', 'No existe sesin flash')}}


<form action="/APPENLAWEBDEKAAF/public/" method="post">
<label for="txtTexto">Ingrese un texto</label>
<input type="text" id="txtTexto" name="txtTexto">
<input type="submit" value="Guardar sesin">
</form>
</body>
</html>

24
paginados.blade.php
?
1

<!doctype html>

<html lang="es">

<head>

4
5
6
7
8

<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<ul>

<li><a href="/APPENLAWEBDEKAAF/public/">Pgina inicio</a></li>

10

<li><a href="/APPENLAWEBDEKAAF/public/paginados">Pgina dos</a></li>

11

<li><a href="/APPENLAWEBDEKAAF/public/paginatres">Pgina tres</a></li>

12

<li><a href="/APPENLAWEBDEKAAF/public/paginacuatro">Pgina cuatro</a></li>

13

</ul>

14

Mi Sesin: {{Session::get('miSesionTexto', 'No existe sesin')}}

15
16
17

Mi Sesin flash: {{Session::get('miSesionFlash', 'No existe sesin flash')}}

18
19
20
21
22
23
24
25

<form action="/APPENLAWEBDEKAAF/public/paginados" method="post">


<label for="txtMiSesionFlash">Ingrese sesin flash</label>
<input type="text" id="txtMiSesionFlash" name="txtMiSesionFlash">
<input type="submit" value="Asignar sesin flash">
</form>
</body>
</html>

26
paginatres.blade.php
?
1

<!doctype html>

<html lang="es">

<head>

<meta charset="UTF-8">

5
6
7
8

<title>Document</title>
</head>
<body>
<ul>

<li><a href="/APPENLAWEBDEKAAF/public/">Pgina inicio</a></li>

10

<li><a href="/APPENLAWEBDEKAAF/public/paginados">Pgina dos</a></li>

11

<li><a href="/APPENLAWEBDEKAAF/public/paginatres">Pgina tres</a></li>

12

<li><a href="/APPENLAWEBDEKAAF/public/paginacuatro">Pgina cuatro</a></li>

13

</ul>

14

Mi Sesin: {{Session::get('miSesionTexto', 'No existe sesin')}}

15
16
17

Mi Sesin flash: {{Session::get('miSesionFlash', 'No existe sesin flash')}}

18
19
20
21
22

Pgina tres
</body>
</html>

paginacuatro.blade.php
?
1

<!doctype html>

<html lang="es">

<head>

4
5
6
7
8
9

<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<ul>
<li><a href="/APPENLAWEBDEKAAF/public/">Pgina inicio</a></li>
<li><a href="/APPENLAWEBDEKAAF/public/paginados">Pgina dos</a></li>

10
11
12
13
14

<li><a href="/APPENLAWEBDEKAAF/public/paginatres">Pgina tres</a></li>


<li><a href="/APPENLAWEBDEKAAF/public/paginacuatro">Pgina cuatro</a></li>
</ul>
Mi Sesin: {{Session::get('miSesionTexto', 'No existe sesin')}}

15
16
17

Mi Sesin flash: {{Session::get('miSesionFlash', 'No existe sesin flash')}}

18
19
20
21

Pgina cuatro
</body>
</html>

22

Ahora que tenemos las rutas, el controlador con sus action y las vistas, podremos ver el
ejemplo de como trabajar con las sesiones sobre Laravel. Para ms informacin Ud.
puede ver el siguiente video donde se detalla cada parte de lo anterior.
LARAVEL: CLASE VALIDATOR DE LARAVEL

En este post veremos como realizar la validacin de datos en el Framework Laravel


mediante
la
clase
Validator
que
nos
proporciona
sta.

Veremos casos muy sencillo para poder entender de una manera fcil y as puedan
ampliar Uds. sus conocimientos sobre la clase de validaciones de Laravel.

Procedimiento:

Custom Search

Lo primero que tendremos que hacer es crear nuestra base de datos de pruebas para
este
ejemplo
con
validaciones.
El script de la base de datos es el siguiente.
?
1
2

create database DBAPPENLAWEBDEKAAF;


use DBAPPENLAWEBDEKAAF;

3
4

create table TPersona

idPersona int auto_increment,

nombreCompleto varchar(70) not null,

correoElectronico varchar(70) not null,

edad int not null,

10

primary key(idPersona)

11

);

Seguidamente no deben olvidarse configurar los parmetros de conexin hacia la base de


datos que crearemos con el script anterior. Eso lo haremos en el archivo database.php.
La ruta que tendremos para nuestro ejemplo es el siguiente.
?

<?php

2
3

Route::any('/', 'IndexController@actionIndex');

El modelo ser TPersona.php


?
1

<?php

class TPersona extends Eloquent

protected $table='TPersona';

protected $primaryKey='idPersona';

public $timestamps=false;

?>

Ahora vamos por el controlador el cual ser el siguiente.


?
1

<?php

class IndexController extends BaseController

4
5
6
7
8
9
10

public function actionIndex()


{
if($_POST)
{
$validator=Validator::make
(
array
(

11

'nombreCompleto' => Input::get('txtNombreCompleto'),

12

'correoElectronico' => Input::get('txtCorreoElectronico'),

13

'edad' => Input::get('txtEdad')

14

),

15

array

16

(
'nombreCompleto' => 'required',

17

'correoElectronico' => 'required|email|unique:TPersona',

18

'edad' => 'required|min:15|max:50|numeric'

19
20
21
22
23

)
);

if($validator->fails())
{

24

if($validator->messages()->first('nombreCompleto')!='')

25

26

return View::make('index', array('mensaje' => 'El nombre es requerido'));

27

28
29

if($validator->messages()->first('correoElectronico')!='')

30

return View::make('index', array('mensaje' => 'El correo es incorrecto o ya exi

31
}

32
33

if($validator->messages()->first('edad')!='')

34

35

return View::make('index', array('mensaje' => 'Corrija el dato edad. La edad de

36
37

}
}

38
39

$tPersona=new TPersona;

40
41
42
43

$tPersona->nombreCompleto=Input::get('txtNombreCompleto');
$tPersona->correoElectronico=Input::get('txtCorreoElectronico');

44
45

$tPersona->edad=Input::get('txtEdad');

46
47

$tPersona->save();

48
49

return View::make('index', array('mensaje' => 'Operacin realizada correctamente'

50

51
return View::make('index');

52
}

53
54

55

?>

56
Finalmente creamos la vista que tendr los campos para insertar informacin a la base de
datos los cuales tambin sern validados mediante Validator en el controlador.
?
1

<!doctype html>

<html lang="es">

<head>

4
5
6
7
8
9
10

<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<b>{{{$mensaje or ''}}}</b>
<form action="/APPENLAWEBDEKAAF/public/" method="post">
<label for="txtNombreCompleto">Nombre completo</label>
<input type="text" id="txtNombreCompleto" name="txtNombreCompleto">

11
12
13

<label for="txtCorreoElectronico">Correo electronico</label>

14
15

<input type="text" id="txtCorreoElectronico" name="txtCorreoElectronico">

16
17
18
19

<label for="txtEdad">Edad</label>
<input type="text" id="txtEdad" name="txtEdad">

20
21
22
23
24

<input type="submit" value="Guardar datos">


</form>
</body>
</html>

25
Una vez realizado todo lo anterior tendremos listo nuestro ejemplo de validaciones sobre
Laravel. Para ms informacin Ud. puede ver el siguiente video.
LARAVEL: LEER DATOS DE EXCEL - IMPORTAR

En este post veremos la manera de leer archivos de Excel mediante un mdulo de Laravel
el cual nos puede permitir importar datos a una base de datos a partir de un archivo en
Microsoft Excel.

Procedimiento:

Custom Search

Para realizar la lectura de archivos Excel primero debemos instalar el mdulo necesario,
lo cual lo podemos ver en uno de mis post anteriores que sera el del siguiente enlace.
http://enlawebdekaaf.blogspot.com/2014/09/laravel-exportar-datos-excel.html
Una vez instalado el mdulo de Excel slo ser necesario aplicar el siguiente cdigo en el
controlador para hacer lectura del archivo.
?
1

<?php

class IndexController extends BaseController

4
5

public function actionIndex()


{
Excel::load('public/archivo.xlsx', function($archivo)

$result=$archivo->get();

8
9

foreach($result as $key => $value)

10

11
12

echo $value->codigo_de_barras.' --- '.$value->nombre.' --- '.$value->cantidad.'


';

13

14

})->get();

15
16
17

//return View::make('index');
}

18
19
20

}
?>

Lgicamente es necesario rutear este controlador con su respectivo action para que
pueda ejecutarse correctamente, pero al terminar la ruta correcta y hacer correr este
cdigo podremos ver que se cargan datos segn el archivo que se a ledo manejando las
cabeceras adecuadamente en el archivo, lo cual posteriormente se convierten en objetos
para
leer
las
columnas.
Para ms informacin ser necesario ver el video que se puede apreciar a continuacin.
LARAVEL: DIRECTORIO TELEFNICO PARTE 1-CREACIN DE BASE DE DATOS

Aqu empezamos con una secuencia pequea de manuales donde aprenderemos a


realizar una aplicacin simple sobre el framework Laravel "Aplicacin de directorio
telefnico" aplicando todos los conocimientos previos hasta el momento, incluyendo
algunos otros nuevos temas que an no se tocaron anteriormente.

Procedimiento:

Custom Search

Lo primero ser crear nuestra base de datos basado en slo 2 tablas pero esto nos ser
muy funcional al momento de implementar nuestra pequea aplicacin usando todos los
estndares
de
desarrollo
de
software
y
dems.
El script de la base de datos vendra a ser el siguiente.
?
1

create database DBAPPDIRECTORIOTELEFONICO;

use DBAPPDIRECTORIOTELEFONICO;

3
4

create table TUsuario

6
7
8
9
10
11

idUsuario int auto_increment,


nombre varchar(30) not null,
apellido varchar(40) not null,
nombreUsuario varchar(30) not null,
contrasenia varchar(700) not null,
created_at datetime not null,
updated_at datetime not null,

12

primary key(idUsuario)

13

);

14
15

create table TDirectorio

16

17

idDirectorio int auto_increment,

18

idUsuario int not null,

19

nombreCompleto varchar(70) not null,

20

direccion varchar(700) not null,

21
22
23

telefono varchar(20) not null,


fechaNacimiento date not null,
created_at datetime not null,
updated_at datetime not null,

24
25

foreign key(idUsuario) references TUsuario(idUsuario)

26

on delete cascade on update cascade,

27

primary key(idDirectorio)

28

);

29
Una vez tengamos el script anterior, slo hace falta correr dicho script y tendremos lista la
base de datos. Para ms explicacin Ud. puede ver el video que se encuentra en la parte
inferior.
Ahora, para nuestro primero manual slo hara falta crear el proyecto en Laravel lo cual lo
montamos en nuestro servidor web local para que lo podamos ejecutar. El servidor es en
apache
y
pueden
usar
el
paquete
Wamp,
Xampp,
Lamp,
etc.
El comando que ejecutamos una vez dentro del directorio de nuestros proyectos web ser
el
siguiente.
composer create-project laravel/laravel APPDIRECTORIOTELEFONICO --prefer-dist
El comando anterior puede tardar de acuerdo a la velocidad que dispongas de internet o
tambin depender de la disponibilidad del servidor donde trabaja composer.
Luego de haber esperado el tiempo correspondiente, ya tendremos listo nuestro proyecto
y
al
acceder
en
un
navegador
web
a
la
direccin
http://localhost/APPDIRECTORIOTELEFONICO/public/
ya deberamos tener el logo de Laravel cargado que vendra a ser el "Hola mundo" del
proyecto
en
blanco
sobre
Laravel.
Hasta este punto lo dejaremos en este post y seguiremos posteriormente con ms partes
de la aplicacin hasta terminar el pequeo proyecto y publicarlo en internet.
LARAVEL: DIRECTORIO TELEFNICO PARTE 2-CREACIN DEL LAYOUT

Aqu en la segunda parte del directorio telefnico sobre Laravel realizaremos la creacin
del tamplate o layout con lo cual tendremos un diseo general el cual podremos heredar
posteriormente a todas las vistas que lo requieran dentro de nuestra aplicacin.

Procedimiento:

Custom Search

Para este caso lo que debemos manejar correctamente es las rutas y los controladores
con sus respectivos action y ya posteriormente el layout que creemos slo se heredar de
una forma muy sencilla mediante blade en todas las vistas que lo requieran.
Para el caso anteriormente mencionado es muy importante que todas las vistas que
heredarn el layout as como tambin el layout dispongan de la extensin "blade.php",
caso contrario no podr soportar la herencia ni nada que se est tratando de realizar con
el
motor
de
plantillas
blade
de
Laravel.
Por ahora slo creamos el layout para posteriormente darle un diseo ms agradable para
los usuarios que puedan ingresar a nuestra aplicacin.

LARAVEL: DIRECTORIO TELEFNICO PARTE 3-FORMULARIO DE REGISTRO DE


USUARIOS

Aqu continuando con la tercera parte de nuestro directorio telefnico sobre Laravel
veremos y trataremos el diseo bsico del layout incluido ya de una vez el formulario para
el registro de usuarios en el cual dejaremos todo listo para empezar con la interaccin
sobre la base de datos.

Procedimiento:

Custom Search

Esta vez organizaremos correctamente el diseo general para empezar con las
operaciones
sobre
el
sistema
y
la
base
de
datos.
Trabajaremos posteriormente con Eloquent que es el mapeador de datos de Laravel as
que en este punto dejamos pendiente la configuracin y dems para un siguiente post.
En esta parte slo estamos viendo el diseo del Layout dejando las partes del men y la
seccin que posteriormente ser para el inicio de sesin, as mismo dejamos listo el
formulario para el registro de usuarios que lo haremos en el siguiente post.

LARAVEL: DIRECTORIO TELEFNICO PARTE 4-REGISTRAR USUARIO Y ENCRIPTAR


CONTRASEA

Aqu en la cuarta parte del directorio telefnico sobre Laravel realizaremos la insercin de
datos a la tabla usuario, as mismo veremos la manera de encriptar la contrasea del
usuario.

Procedimiento:

Custom Search

Para interactuar con la base de datos primero deberemos configurar el archivo


database.php donde indicaremos los datos de conexin. Seguidamente debemos tener en
cuenta que en este punto trabajaremos con el mapeador de datos Eloquent de Laravel,
as que debemos crear los modelos correspondientes para cada tabla de la data.
En los modelos se debe tener definido la tabla y el primary key de dicha tabla la cual ser
con la que interacte el modelo, as mismo, debemos crear las relaciones que se tiene
con
las
otras
tablas
lo
cual
lo
veremos
en
el
post
siguiente.

Ahora vemos como realizar la insercin de usuarios y tambin la encriptacin de su


contrasea para disponer de su informacin ms segura al momento de guardarlas.
LARAVEL: DIRECTORIO TELEFNICO PARTE 5-VALIDACIN DE REGISTRO DE
USUARIO (CLASE VALIDATOR)

Continuando con el directorio telefnico sobre Laravel, ahora veremos el uso de la clase
Validator con la cual veremos como validar y restringir informacin en el registro de datos
sobre la base de datos.

Procedimiento:

Custom Search

Debemos entender que la validacin de datos se puede hacer en ms de una capa sobre
nuestra aplicacin. Existen validaciones en el Front-end y Back-end lo cual puede ser
realizado con Javascript en el cliente, con php para este caso (Laravel-Validator) sobre el
servidor
y
en
las
restricciones
en
la
base
de
datos.
Las validaciones tendrn mucho que ver segn el tipo de sistema que se est realizando.
Si tenemos un sistema que ser expuesto para todo el mundo y estar sujeto a posibles

ataques por usuarios mal intencionados o dems, ser necesario validar en las 3 capas
antes mencionadas. Si el sistema slo es para un pblico cerrado con pocos o nada de
conocimiento en desarrollo de software bastara con hacer las validaciones en el cliente,
con lo cual tambin ahorraramos la carga de procesos al servidor y as sucesivamente
debemos
ver
cada
caso
para
las
validaciones.
En nuestro caso lo haremos en el servidor, ms que por la seguridad lo haremos para que
aprendamos como hacerlas mediante el framework Laravel y su clase Validator.
LARAVEL: DIRECTORIO TELEFNICO PARTE 6-ALERTAS Y RENDERIZACIN DE
ERRORES

En esta parte 6 de nuestro directorio telefnico sobre Laravel veremos el manejo de


alertas y la renderizacin de datos basado en el envo de mensajes mediante Sesiones
Flash en el redireccionamiento de una pgina.

Procedimiento:

Custom Search

Haremos uso de sesiones flash para enviar parmetros luego de una redireccin ya que si
tratamos de enviar los datos como en una simple renderizacin como cuando muestra la
visa con View::make vern que no es posible porque al redireccionar se pierde dicha
informacin.
Para la parte de los mensajes usaremos esa forma anteriormente mencionada en
conjunto de envos normales en la renderizacin para el caso de los errores as
devolviendo tambin los datos del formulario para no volver a escribir estos y para los
registros
correctos
haremos
uso
de
las
sesiones
flash.
Tambin aadiremos un formato o fuente de texto ya sea definido por un color especfico
de texto segn sea la alerta (Correcto o incorrecto).
LARAVEL: DIRECTORIO TELEFNICO PARTE 7-INICIO DE SESIN

Parte 7 del directorio telefnico sobre Laravel donde trataremos el tema de inicio de
sesin o login, lo cual lo realizaremos basado en los datos registrados en la tabla usuarios
de los post anteriores.

Procedimiento:

Custom Search

En esta parte veremos la autenticacin de usuario lo cual tendremos que hacerlo


interactuando con las contraseas encriptadas siendo un caso normal ya que es la forma
de mantener seguridad y nos loguearemos operando con dichas contraseas y los
usuarios que ya fueron registrados con anterioridad.
LARAVEL: DIRECTORIO TELEFNICO PARTE 8-CIERRE DE SESIN

Esta vez continuaremos con Laravel viendo el tema del cierre de sesin donde tambin se
har mencin de como realizar la configuracin bsica del tiempo de sesin en inactividad
que podemos darle a nuestras sesiones de aplicacin.

Procedimiento:

Custom Search

Para realizar el cierre de sesin en el framework Laravel deberemos usar la clase Session
y la funcin forget del mismo donde slo tendremos que indicar el nombre o key de la
sesin que asignamos en el inicio del mismo para de esta forma borrarla y dejarla sin
definir.

LARAVEL: DIRECTORIO TELEFNICO PARTE 9-DATOS DEL USUARIO

Parte 9 del directorio telefnico sobre Laravel donde veremos la forma de mostrar los
datos de un usuario segn la sesin con la cual haya iniciado ste en el sistema.

Procedimiento:

Custom Search

Haremos uso de Eloquent para realizar la consulta a la base de datos donde veremos la
funcin whereRaw para traer el registro de un usuario segn la sesin con la cual haya
iniciado.
Vern que es muy sencillo de manejar esto mediante Eloquent el cual viene a ser el
mapeador de datos de Laravel haciendo muy fcil la interaccin con las consultas en la
data.
LARAVEL: DIRECTORIO TELEFNICO PARTE 10-EDITAR USUARIO

Continuando con nuestro directorio telefnico sobre Laravel, ahora veremos el tema de
edicin de datos donde trataremos la edicin del usuario con el cul se a iniciado sesin
en el sistema.

Procedimiento:

Custom Search

Primero debemos entender que para realizar la edicin de un usuario es necesario saber
el identificador de este siendo el Id para nuestro caso con lo que realizaremos una
primera consulta donde buscamos visualizar sus datos y en el envo de la edicin
tendremos que enviar dicho Id mediante un campo oculto para verificar al usuario en la
base de datos y posteriormente editar su informacin para al final guardar con los
cambios
generados.
Veremos que para enviar estos parmetros lo haremos mediante Url's limpias lo cual nos
ofrece el mismo framework Laravel facilitndonos mucho el trabajo y manteniendo un
estndar al momento de generar dichas Url's.
LARAVEL: DIRECTORIO TELEFNICO PARTE 11-VALIDAR EDICIN DE USUARIO

En esta parte 11 del directorio telefnico sobre Laravel veremos la validacin de datos
para editar los usuarios en lo cual aplicaremos la clase Validator de Laravel y la clusula
WhereRaw de Eloquent.

Procedimiento:

Custom Search

Cuando nosotros queremos editar usuarios en una aplicacin, es necesario validar dichos
datos de una manera muy similar al de la parte de registro con la pequea diferencia de
que se pueden dar casos que existan campos nicos pero que se tiene que obviar a si
mismo
al
momento
de
editarse.
Para este caso estaremos usado la clase Validator de Laravel con lo que restringimos que
los campos no puedan ser vacos; pero cuando queremos poner un campo nico
obvindose a si mismo, ya surge algunos errores que por algn motivo Laravel no trabaja
de forma correcta para los unique que desean obviar un primary key de la base de datos
ya que no reconoce el primary key del modelo y por si mismo busca un campo id que no
viene a nuestro caso. Dicho esto, para dar solucin a tal; usaremos la funcin WhereRaw
de Eloquent con lo que podemos realizar nuestra consulta personalizada indicando que se
compare con los campos unique necesario pero obviando los que nosotros indiquemos.

LARAVEL: DIRECTORIO TELEFNICO PARTE 12-REGISTRAR CONTACTOS DEL


DIRECTORIO

Ahora empezamos con la parte del directorio donde registraremos a nuestros contactos
para
tener
posteriormente
una
lista
de
todos
ellos.
En este video veremos el registro y la validacin de datos para dicho registro de una
forma muy rpida y sencilla ya que no redundaremos en lo que ya aprendimos en los post
anteriores.

Procedimiento:

Custom Search

En esta parte tendremos que registrar a un contacto de nuestro directorio telefnico, pero
tengamos en cuenta que en este punto necesitaremos pasarle el Primary Key de nuestro
usuario para identificar a quien pertenece dicho registro y luego as poder cargar los datos
de forma independiente previendo el usuario que haya iniciado sesin en la aplicacin.
Existen algunas formas de hacer esto, ya sea almacenando el "idUsuario" en una sesin
para interactuar con el mismo en cualquier momento o tambin podramos consultar de la

base de datos mediante el "nombreUsuario" que se almacen anteriormente en una


sesin. Para nuestro caso emplearemos el segundo punto ya que lo del almacenamiento
en la sesin es muy sencillo de hacer lo cual tambin se explica en el video; pero el
segundo punto tampoco es complejo, lo que sucede es que muchos pueden optar por esa
segunda opcin as que dicha opcin es la que usaremos para el ejemplo.
LARAVEL: DIRECTORIO TELEFNICO PARTE 13-TRY CATCH Y TRANSACCIONES

Continuando con los temas sobre Laravel, ahora veremos el manejo de transacciones en
este poderoso Framework lo cual viene a ser algo muy sencillo de manejar mediante la
clase DB que nos ofrece este.

Procedimiento:

Custom Search

En este post veremos la forma de usar las transacciones en Laravel, con lo cual podemos
asegurar la interaccin de la informacin sobre la base de datos manteniendo siempre
consistente y seguro al momento de mandar a guardar algo a esta.
El problema surge cuando queremos interactuar con ms de una tabla sobre una base de

datos y corremos el riesgo que algo salga mal en una de ellas, con lo que afectara
negativamente a las dems generando inconsistencia de datos y datos inciertos del
mismo. Entonces lo que usamos para solventar esto son las transacciones ya que
cumplen el trabajo de restaurar los cambios efectuados en la data en caso que sea
necesario,
es
decir:
Supongamos que tenemos que insertar informacin a 3 tablas en nuestra base de datos;
si falla algo en la segunda tabla despus de ya haber registrado la informacin en la
primera, deber entrar en accin la transaccin con lo que se debe procesar que si algo
fall en la insercin de una de las 3 tablas debe restaurar al estado anterior a la apertura
de la transaccin, es decir, as como registr informacin en la primera tabla y fall en la
segunda, los datos de la primera debern deshacerse porque ya no ser consistente o
simplemente no tendr sentido sin los registros de las otras dos tablas faltantes, y as es
como se aplicaran las transaccin en los diferentes lenguajes de programacin.
Para nuestro caso slo usaremos Laravel y la clase DB mediante los mtodos de
transaccin que nos facilita este (beginTransaction, commit y rollback).
LARAVEL: DIRECTORIO TELEFNICO PARTE 14-LISTAR DIRECTORIO POR SESIN
INICIADA

Avanzando ms con nuestro directorio telefnico sobre Laravel, ahora veremos la manera
de listar datos del directorio filtrado por el usuario que a iniciado sesin con lo que
veremos slo informacin relevante e independiente por usuario.

Procedimiento:

Custom Search

Existen situaciones en que tenemos que filtrar informacin segn cierto parmetro en el
sistema, como en este caso que lo necesitamos mediante el usuario que haya iniciado
sesin en nuestra aplicacin. Esto es muy sencillo de manejar y an ms mediante el
ORM Eloquent de Laravel ya que nos ofrece el acceso de forma muy sencilla a las
consultas mediante clusulas WhereRaw y el paso de parmetros al mismo.
En este post veremos el filtro mediante una sesin de lo cual haremos lectura para
identificar el "Primary Key" del usuario y as posteriormente elegir la informacin necesaria
segn le pertenezca al usuario que se logue en el sistema.
LARAVEL: DIRECTORIO TELEFNICO PARTE 15-EDITAR LISTA DE DIRECTORIO

Aqu en la parte 15 del directorio telefnico sobre Laravel veremos la edicin de datos en
la lista de directorio con lo que podremos elegir cualquiera de toda la lista para modificar y
guardar su informacin en la base de datos.

Procedimiento:

Custom Search

Para editar los datos de la lista del directorio, tendremos que pasarle como parmetro el
"Primary Key" de este a una funcin Javascript que posteriormente lo enviar a una vista
con lo cual podremos identificar al registro en la base de datos y modificar dichos datos
para
posteriormente
persistirlos.
Este es un proceso muy sencillo y an ms con el ORM Eloquent que nos ofrece Laravel
ya que slo tendremos que usar la funcin "find" y posteriormente luego de haber
cambiado los datos del modelo aplicaremos la funcin "save".
LARAVEL: DIRECTORIO TELEFNICO PARTE 16-ELIMINAR REGISTRO DE
DIRECTORIO

Parte 16 del directorio telefnico sobre Laravel donde trataremos la eliminacin da datos
de la base de datos mediante el ORM Eloquent de este Framework.

Procedimiento:

Custom Search

Para eliminar registros de la data lo primero que necesitaremos es la llave primaria del
registro "Primary Key" con lo que identificaremos el registro para posteriormente aplicar la
orden
respectiva
para
eliminar
dicho
registro.
En Laravel es muy sencillo de hacer esto ya que mediante su ORM Eloquent podemos
usar la funcin "delete" de la clase instanciada como modelo mediante el "Primary Key" y
la
funcin
"find".
Primero consultaremos el registro con lo que lo cargamos en el modelo y una vez
tengamos dicho modelo cargado en una variable de Php haremos uso de Eloquent para
eliminarlo mediante su funcin delete aplicado a la variable contenedora del modelo.
LARAVEL: DIRECTORIO TELEFNICO PARTE 17-FILTROS DE SESIN

En este post trataremos los filtros sobre Laravel donde restringiremos el acceso de url's
directas si es que no se a iniciado sesin en la aplicacin.

Procedimiento:

Custom Search

Laravel nos ofrece filtros de acceso los cuales se lanzan antes o despus de cumplir con
la peticin HTTP. En nuestro caso usaremos el evento que se da antes de cumplir la
peticin con lo que podremos restringir acceso y controlar las sesiones de la aplicacin
manteniendo con mayor seguridad y consistencia dicha aplicacin.
LARAVEL: DIRECTORIO TELEFNICO PARTE 18-EXPORTAR DIRECTORIO A EXCEL

Aqu en la parte 18 del directorio telefnico sobre Laravel trataremos el tema de


exportacin de datos a excel mediante el mdulo "maatwebsite/excel" de este framework.

Procedimiento:

Custom Search

Para seguir este post es recomendable revisar el siguiente enlace.


http://enlawebdekaaf.blogspot.com/2014/09/laravel-exportar-datos-excel.html
Aunque en el enlace anterior slo cargamos datos creados en el mismo controlador, en

esta publicacin veremos la manera de cargar y descargar datos a excel desde la base de
datos con lo que conseguiremos interactuar informacin de la data con datos tangibles y
fsicos los cuales lgicamente pueden ser impresos ya desde el formato excel
descargado.
LARAVEL: DIRECTORIO TELEFNICO PARTE 19-EXPORTAR DIRECTORIO A PDF
CON FPDF

En este post veremos la manera de exportar datos de la base de datos a un formato PDF
lo cual lo realizaremos con el mdulo FPDF de Laravel .

Procedimiento:

Custom Search

FPdf es un mdulo o librera que se puede implementar en Laravel o Php nativo lo cual es
muy
optimo
al
momento
de
cargar
datos
en
un
formato
Pdf.
Realmente es muy recomendable para exportar gran cantidad de datos a Pdf ya que
consume muy poca memoria al momento de cargar informacin en esta.

You might also like