Professional Documents
Culture Documents
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.
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.
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.
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.
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.
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.
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.
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
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
Sin
se
ms
que
decir
les
deja
con
el
ejemplo
continuacin.
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.
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
{
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.
10
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
ms,
empezaremos
con
el
manejo
bsico
de
rutas
sobre
Laravel.
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
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
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
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
?
1
2
3
4
<?php
class UsuarioController extends BaseController
{
public function actionRegistrar()
return View::make('/usuario/registrar');
8
9
10
11
return View::make('/usuario/editar');
12
13
14
15
{
return View::make('/usuario/ver');
16
}
17
18
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
3
4
5
{{Form::text('txtNombreCompleto')}}
6
7
8
{{Form::label('passContrasenia', 'Contrasea')}}
9
10
11
{{Form::password('passContrasenia')}}
12
13
14
15
16
17
18
19
20
21
{{Form::label('checkConocimientoJava', 'Java')}}
22
{{Form::label('checkConocimientoNode', 'Node')}}
23
24
{{Form::label('checkConocimientoRuby', 'Ruby')}}
25
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
38
39
40
{{Form::file('btnSubirArchivo')}}
41
42
{{Form::label('selectPais', 'Pas')}}
43
44
45
46
{{Form::select('selectPais', array(
'peru' => 'Per',
47
48
49
50
51
52
53
}}
54
55
56
{{Form::macro('miCampo', function($id)
57
58
59
})}}
60
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
3
4
5
6
7
8
9
10
<label for="passContrasenia">Contrasea</label>
11
12
13
14
15
16
17
<label for="checkConocimientoJava">Java</label>
18
19
<label for="checkConocimientoCSharp">CSharp</label>
20
21
22
23
24
25
26
27
28
<label for="radioSexo">Sexo</label>
29
30
31
<label for="radioSexoM">Masculino</label>
32
33
<label for="radioSexoF">Femenino</label>
34
35
36
37
38
39
40
41
42
<label for="selectPais">Pas</label>
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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
<!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
16
17
18
19
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;
9
10
padding: 7px;
}
11
12
13
header
{
14
background-color: #1570A6;
15
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
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.
?
$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
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".
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
27
<td>{{$value->fechaRegistro}}</td>
28
<td>{{$value->fechaModificacion}}</td>
29
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
array
10
11
12
13
14
);
15
16
return Redirect::to('/usuario/ver');
17
18
19
$tUsuario=TUsuario::find($idUsuario);
20
21
22
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>
<label for="txtNombre">Nombre</label>
8
9
10
11
12
13
<label for="txtApellido">Apellido</label>
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<label>Sexo</label>
34
<label for="radioSexoM">Masculino</label>
35
36
<label for="radioSexoF">Femenino</label>
37
38
39
40
41
42
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
26
<td>{{$value->fechaRegistro}}</td>
27
<td>{{$value->fechaModificacion}}</td>
28
29
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
$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
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
13
14
15
if(Input::has('txtContraseniaEncriptada'))
16
$contraseniaDesencriptada=Crypt::decrypt(Input::get('txtContraseniaEncriptada')
17
18
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">
10
11
12
</form>
13
14
15
16
17
18
19
20
21
22
<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"
},
requerimientos
del
proyecto.
'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
4
5
6
7
8
9
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
25
26
);
27
$sheet->setHeight(array
28
29
30
)
31
);
32
33
$data=[];
34
35
36
37
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"
},
requerimientos
del
proyecto.
'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
{
$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
4
5
Session::put('miSesionTexto', Input::get('txtTexto'));
8
9
return View::make('index');
10
11
12
13
return View::make('index');
}
14
15
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
28
29
return View::make('paginatres');
30
31
32
33
{
return View::make('paginacuatro');
34
}
35
36
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>
10
11
12
13
</ul>
14
15
16
17
18
19
20
21
22
23
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>
10
11
12
13
</ul>
14
15
16
17
18
19
20
21
22
23
24
25
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>
10
11
12
13
</ul>
14
15
16
17
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
15
16
17
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
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
3
4
10
primary key(idPersona)
11
);
<?php
2
3
Route::any('/', 'IndexController@actionIndex');
<?php
protected $table='TPersona';
protected $primaryKey='idPersona';
public $timestamps=false;
?>
<?php
4
5
6
7
8
9
10
11
12
13
14
),
15
array
16
(
'nombreCompleto' => 'required',
17
18
19
20
21
22
23
)
);
if($validator->fails())
{
24
if($validator->messages()->first('nombreCompleto')!='')
25
26
27
28
29
if($validator->messages()->first('correoElectronico')!='')
30
31
}
32
33
if($validator->messages()->first('edad')!='')
34
35
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
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
14
15
16
17
18
19
<label for="txtEdad">Edad</label>
<input type="text" id="txtEdad" name="txtEdad">
20
21
22
23
24
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
4
5
$result=$archivo->get();
8
9
10
11
12
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
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
use DBAPPDIRECTORIOTELEFONICO;
3
4
6
7
8
9
10
11
12
primary key(idUsuario)
13
);
14
15
16
17
18
19
20
21
22
23
24
25
26
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.
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.
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
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
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
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.
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.
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
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
Procedimiento:
Custom Search
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.