107
LARAVEL: INSTALACIÓN En esta primera publicación 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 máquina ya sea con Wamp, o Xampp. No se hará el manual para instalar PHP ya que existe mucha información de aquello, además se da por supuesta que quien esté buscando información 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

Laravel 5.0 manual

Embed Size (px)

DESCRIPTION

Pequeño manual de Laravel 5.0

Citation preview

LARAVEL: INSTALACIÓN

En esta primera publicación 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 máquina ya sea con Wamp, o Xampp. No se hará el manual para instalar PHP ya que existe mucha información de aquello, además se da por supuesta que quien esté buscando información 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 instalación del mismo. Para esto sólo ejecutamos dicho archivo. Es muy probable que nos pida autorización para iniciar el programa con permisos de administrador a lo cual le damos dicha autorización.

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 instalación de composer y

nos dará la opción de elegir la instalación 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 dirección 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 según donde haya realizado la instalación de PHP.

Luego de haber seleccionado la dirección de "php.exe" le damos al botón "Siguiente".

Posteriormente empezará a cargar una barra de progreso para luego mostrar una ventana

donde nos indicará que verifiquemos ciertos aspectos para la instalación de composer los

cuales vendría a ser.

La versión de PHP que pide composer según su caso.

Agregar a las variables de entorno la dirección de nuestro archivo binario de php.

Agregar a las variables de entorno la dirección de los binarios de composer.

Disponibilidad de la instalación de Shell Menus

Y luego para iniciar la instalación le damos clic al botón "Install" con lo que descargará de

internet todo lo necesario para darle funcionamiento a composer.

En caso que les solicite activar alguna extensión adicional sobre PHP como es el caso de

openssl para algunos, simplemente debe descomentar la línea de dicha extensión en

php.ini o si te encuentras con wamp sólo ve a las extensiones en el ícono de la barra de

procesos de este programa y habilítalo.

La línea que Ud. debería descomentar en php.ini es la siguiente.

extension=php_openssl.dll

Realizado esto será necesario reiniciar el servidor web y reintentar nuevamente la

instalación de Composer y luego tendremos todo listo para empezar con Laravel.

CREACIÓN DEL PROYECTO SOBRE LARAVEL VÍA COMPOSER.

Ahora, una vez tenemos instalado Composer podremos crear fácilmente 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 según la velocidad de internet que Ud. tenga.

Si todo salió bien al crear nuestro proyecto, la ventana de "cmd" debería haber quedado

parecido o igual a la siguiente imagen.

Ahora sólo 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 debería mostrarse lo siguiente.

Como pudo ver, con la serie de pasos anteriores pudimos instalar Laravel y además

creamos nuestro primer proyecto en el cual trabajaremos en los siguientes post para

adentrarnos un poco al mundo del framework Laravel de PHP.

Sin más que decir me despido y espero puedan hacer comentarios y recomendar el tema.

LARAVEL: CONFIGURACIÓN BÁSICA

Antes de seguir con los ejemplos de desarrollo sobre Laravel, veremos como realizar una

configuración simple cambiando algunos parámetros que son importantes para poder

iniciar en nuestra aplicación sobre este Framework.

Tengamos en cuenta que lo que se hace en este post será algo muy básico para

concentrarnos posteriormente en otros ejemplos y de esta manera iremos cambiando más

adelanto otras configuraciones que sean necesarias según los módulos 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 "Configuración Local

de la Aplicación". Para esto ubicamos la siguiente línea.

'locale' => 'en',

y lo cambiamos por la siguiente.

'locale' => 'es',

Con lo anterior estaremos realizando la configuración local para el proveedor de

traducción dentro de nuestra aplicación.

Ahora veamos otro aspecto muy importante para la cuestión de seguridad. 

Para esto ubiquemos la siguiente línea.

'key' => 'F7StjuPCmn30MacizLEA4KRj0fK2jNCE',

Tenga en cuenta que aquella línea 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". También debe

fijarse que es muy importante que se encuentre con una cantidad de 32 caracteres para

mantener una seguridad óptima dentro de nuestra aplicación.

Por otro lado si se desea lo pueden dejar tal cual está ya que esa cadena se crea

aleatoriamente por la entropía generada al crear el proyecto.

Por último realicemos la "Configuración de la Zona Horaria", para esto ubiquemos la

siguiente línea.

'timezone' => 'UTC',

Aquí haremos el cambio para efectuar nuestra configuración de zona horaria.

Esto puede variar según a donde nos encontremos ubicados ya que tiene que ver con la

hora que nos dará el sistema lo que varía según la ubicación.

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

'timezone' => 'America/Lima',

Con la línea anterior estaríamos terminando nuestra configuración básica para poder

empezar a realizar los ejemplos manejando directamente nuestra aplicación sin ningún

percance que se pueda presentar. Sin embargo se debe tener en cuenta que existen

muchas otras configuraciones las cuales iremos modificando según lo vayamos a

necesitar.

Luego de realizar todos los pasos anteriores, podemos probar nuestra aplicación y

debería 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 debería correr la aplicación sin ningún 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 más 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 patrón de

arquitectura Modelo Vista Controlador (MVC).

Dicho lo anterior primero procederemos a entender las carpetas más 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 más importantes del mismo.

Véase 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 serán para trabajar con la parte del

diseño visual de nuestra aplicación "Vista", la lógica de negocios y quien se encargue de

derivar cada petición "Controlador", el manejo de la persistencia de datos "Modelo" y por

último el control de acceso a rutas dentro de nuestra aplicación.

Dicho lo anterior, de forma general mencionaremos alguna de las carpetas y archivos más

recurridos que se encuentran dentro de la carpeta "app".

config

Esta es la carpeta donde podremos ubicar todos los archivos de configuración de nuestra

aplicación, así como ya lo habíamos hecho en el post anterior; como también podremos

configurar la conexión a nuestra base de datos, las sesiones, el envío de correo

electrónico, la autenticación de usuarios y mucho más.

controller

Esta carpeta viene a ser donde se almacenan todos los controladores de nuestra

aplicación los cuales se encargan de interactuar con el modelo, de renderizar vistas y

lógicamente manejar la capa de negocio.

Para entender mejor esta parte y las siguientes carpetas que se definirán; es necesario

leer sobre el patrón de arquitectura modelo vista controlador lo cual lo puede encontrar

fácilmente en google.

models

Saltando un poco en las carpetas ahora nos encontramos con "models". Es donde se

tendrá los modelos o también conocidos como entidades en otros lenguajes, lo cual se

encarga de persistir la información basado en las tablas de la base de datos que rastrea

esta.

En otras palabras más simples sería 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 código HTML que será cada página que queramos tener en nuestra

aplicación web. Tenga en cuenta que también es necesario que interactuemos con código

PHP para cargar información 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 más limpio nuestro código HTML evitando el método intrusivo clásico de

PHP nativo.

filters.php

Este es un archivo muy importante para interceptar cualquier petición http. Aquí podremos

lanzar cualquier proceso antes o después de la petición realizada.

Piense en restringir acceso a ciertas url's según se tenga o no una sesión 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 (Código 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 sólo permita peticiones get, post o ambos.

Ahora que definimos las carpetas más usadas dentro de "app", sólo haremos mención a

la carpeta "public" que se encuentra a la misma altura de la carpeta "app".

Esta carpeta "public" es donde pondremos todos nuestros archivos públicos en la

aplicación lo cual no requiere de un nivel avanzado de seguridad. Unos cuantos casos

podrían ser archivo con contenido como.

Javascript

Hojas de estilo

Imágenes

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

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

En este post, después de haber visto ciertos aspectos básicos de Laravel, por fin realizaremos nuestro primer "Hola Mundo". Esto lo haremos de una forma muy sencilla explicando donde es que tenemos que crear el archivo "index" haciendo ciertas modificaciones para que esto funcione de forma correcta.

Sin más que decir se les deja con el ejemplo a continuación.

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 confusión 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 sólo 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 serían "Archivos Basura" lo que estaría ahí sin ninguna razón.

Posteriormente borramos el archivo "User.php" ubicado en "APPCURSOLARAVEL/app/models/". Este archivo viene a ser quien se encarga de mapear la información a nuestra base de datos, así también será donde pasemos ciertos parámetros para rastrear la tabla y definir algún tipo de restricción 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 lógica 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 aplicación, 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 fijémonos que es lo que pasa si accedemos a nuestra aplicación desde el navegador.

Si ponemos en este momento "http://localhost/APPCURSOLARAVEL/public/" en la barra de navegación 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 también se debe a que nuestro proyecto se encuentra actualmente en modo de producción. 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 aplicación en modo de depuración donde será más fácil identificar el tipo de error que este saliendo al lanzar cierto proceso. Por ejemplo, en este caso debería decirnos que la vista no existe, la ruta no es la correcta o algo similar con lo que reduciría nuestro tiempo empleado para corregir el error.

Para llevar nuestra aplicación al modo de depuración 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' => false,

y el valor que está en "false" lo cambiamos a "true".

'debug' => 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 depuración nos ayuda a encontrar fácilmente los errores que existen en nuestro proyecto, sin embargo, no olviden que cuando lo lancen a producción dicha línea "'debug' => true" deben volver a cambiarlo a false para no presentar ventanas tediosas al cliente que manipule nuestro sistema.

Habiendo visto los modos de producción y depuración de nuestra aplicación, ahora tendremos que crear el archivo "index.php" dentro de nuestras vistas (La carpeta views dentro de la carpeta app) donde pondremos nuestro primer código ruteado y manejado respectivamete desde su controlador. Dentro de ese archivo "index.php" insertaremos todo el código que podemos ver a continuación.

?1

2

3

4

5

6

7

8

9

<!doctype html>

<html lang="es">

<head>

 <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 código en dicho archivo.

?1

2

3

4

5

6

7

8

9

<?php

class IndexController extends BaseController

{

 public function actionIndex()

 {

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

 }

}

?>

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 función llamada "actionIndex" lo cual será la función que se ejecuta antes de renderizar a la vista "index.php".

Fíjese también que retornamos "View::make('/index')" y esto viene a ser la vista que estaría renderizando la función.

No es necesario poner de forma completa la dirección 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 aplicación desde el navegador, veremos que aún sigue fallando, y esto será porque aún falta un paso el cual será el siguiente.

Vamos al archivo de las rutas de nuestra aplicación el cual viene a ser "routes.php" ubicado en la carpeta "app". Aquí veremos el siguiente código.

?1

2

3

<?php

/*

4

5

6

7

8

9

10

11

12

13

14

15

16

17

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

| 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

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

|

*/

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

{

 return View::make('hello');

});

Como puede ver en la parte anterior, existe cierto código que es necesario para rutear el acceso a cada vista que vayamos creando y pues verificaremos que existía una ruta para la dirección "/" que viene a ser la raiz de nuestro proyecto equivalente a "http://localhost/APPCURSOLARAVEL/public/" en la barra de direcciones del navegador; pero fíjense que está apuntando a la vista "hello" lo que se recibe en una función anónima como segundo parámetro del método get el cual era la vista que borramos para limpiar nuestro proyecto por lo que será necesario cambiar dicho código apuntando a "actionIndex" del controllador "IndexController.php" quedando de la siguiente forma (También borré el comentario lo cual no afecta pero esto lo hago para ahorrarnos espacio en la visualización del código).

?1

2

3

<?php

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

Vea en el código anterior que reemplazamos la función del segundo parámetro del método "get" por una cadena "IndexController@actionIndex". Muchos se preguntarán porque hacemos esto. Si se dan cuenta la función anónima era muy parecida a la función que disponemos en el controlador lo cual renderiza a la vista, sin embargo, de la forma anterior con una función anónima lo que se hacía 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 estaríamos manejando de mejor manera nuestro código y respetando el patrón de arqutiectura MVC.

Habiendo realizado todos los pasos anteriores, ahora podemos probar nuestra aplicación 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 también 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 estaría manteniendo orden y seguridad dentro de nuestra aplicación.

Sin más que decir me despido y espero puedan hacer comentarios y recomendar el tema.

LARAVEL: RUTEO BÁSICO

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í también sirve para restringir posibles peticiones no autorizadas según

al lugar donde se quiera acceder.

Sin más, empezaremos con el manejo básico de rutas sobre Laravel.

Vea el ejemplo en GitHub

Procedimiento: 

Custom Search

Para este caso donde nos interesa ver los aspectos más básicos del ruteo sobre Laravel,

veremos 3 formas de hacer esto no siendo todos; sin embargo, serán los que más

usemos con mayor frecuencia para los ejemplos posteriores.

Ruteo básico vía GET

Cuando creamos una ruta, nosotros podemos restringir si queremos que sólo permita

peticiones GET o POST, para este caso el siguiente código sería para que el ruteo sólo

permita peticiones vía GET.

?1

2

3

4

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

{

 return 'Hola Mundo';

});

Como se puede  ver en el código anterior estamos usando la Clase "Route" y su método

"get" donde como primer parámetro estaríamos pasando la dirección de la vista a la cual

queremos acceder considerando dicha dirección como raiz a partir de la carpeta de vistas

de nuestro proyecto. Como segundo parámetro le mandamos una función la cual será

quien gestione la petición realizada y posteriormente tendrá que renderizar la vista. En el

caso anterior sólo retorna una cadena "Hola Mundo" lo cual se deberá mostrar en el

navegador.

Ruteo básico vía POST

Este caso sería muy parecido al anterior con una pequeña diferencia la cual sería el

método de la clase "Route" que se esté usando que aquí será "post". El ruteo para este

tipo de petición vendría a ser de la siguiente forma.

?1

2

3

4

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

{

 return 'Hola Mundo';

});

De esta manera estaríamos restringiendo que la vista "nombrevista" sólo sea accedida

mediante peticiones vía POST.

Ruteo que obvia el verbo de petición

Ahora, ¿qué pasa si quisiéramos que nuestra ruta permita tanto vía POST como GET?.

Para este caso sólo tenemos que usar el método "any" de la clase "Route", quien obviará

el verbo de petición sin importar como venga dicha petición. El código de ruteo sería el

siguiente.

?1

2

3

4

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

{

 return 'Hola Mundo';

});

Ruteo básico que pasa por el controlador

En los 3 casos anteriores vimos como rutear nuestra petición donde simplemente la

pasamos una función anónima de forma directa en el segundo parámetro para que

gestione la petición, 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 debería ocurrir antes de renderizarse la vista o redireccionar a cualquier

otra.

Entonces veamos el código que debería llevar éste, el cual es el siguiente.

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

Vea en la línea anterior que el primer parámetro se mantiene; en este caso estaríamos

creando la ruta para la raiz de nuestro proyecto lo cual apunta a

"IndexController@actionIndex" lo cual viene a reemplazar la función anónima que

habíamos pasado en los casos anteriores, sin embargo, viene a ser prácticamente lo

mismo con ciertas diferencias mínimas.

Primero veamos que en la primer parte del segundo parámetro 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 función a la cual debe

acceder en dicho controlador y por último tenemos el nombre de la función al cual se

accederá en el controlador el cual viene a ser en este caso "actionIndex".

Si Ud. verifica en el código 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 aún después de esto necesita más

mayor explicación, sería bueno que acceda a los post anteriores de Laravel que ahí es

donde fuimos creando ciertos archivos dentro de nuestro proyecto lo cual vendría a

explicar el comportamiento de lo anteriormente planteado.

Este vendría a ser el trato básico con respecto a las rutas sobre Laravel, sin embargo, aún

es necesario conocer más sobre los controladores lo cual lo iremos viendo en post

siguientes dentro del blog; así como también ampliaremos en temas posteriores el

funcionamiento de las rutas con parámetros, con alias sobre las rutas y más.

Sin más 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 aplicación, en este caso cumplirá la función de interceptar

la petición dentro de una vista en nuestra aplicación, procesar cualquier operación

impuesta por el desarrollador y por última pasará a renderizar la vista.

En teoría es una buena práctica tener un controlador por cada tabla en la base de datos y

dicho controlador atenderá a todas las vistas que requiera la interacción 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í sólo hace falta crear

un archivo. Para nuestro caso será "UsuarioController.php" y dentro de ese archivo

pondremos el siguiente código.

?1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<?php

class UsuarioController extends BaseController

{

 public function actionRegistrar()

 {

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

 }

 public function actionEditar()

 {

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

 }

 public function actionVer()

 {

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

 }

 public function actionEliminar()

 {

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

 }

}

?>

Vea en el código anterior que tenemos una clase que hereda de "BaseController" lo cual

será necesario para todos los controladores que creemos en nuestro proyecto. Así mismo,

fíjense que tenemos 4 funciones públicas que estarían haciendo la representación de un

posible CRUD y tengan en cuenta que cada función será quien atienda a una vista

respectivamente.

Fíjese que cada función retorna "View::make('...');" y el parámetro que lleva vendría 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 códigos 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

parámetro "usuario/..." en los "View::make" porque primero debemos acceder a la carpeta

respectiva las vistas dentro de "views".

Para finalizar el proceso de renderización basado en los controladores y las vistas

creadas, sólo hace falta rutear nuestros archivos lo cual lo hacemos agregando el

siguiente código a nuestras rutas.

?1

2

3

4

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 están trabajando

correctamente con la renderización 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

Verán 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 sólo estamos renderizando de forma directa,

podríamos realizar cierta operación antes de retornar las views en las funciones de

nuestros controladores también llamadas "action" o acciones.

Sin más 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 código de este tipo.

Blade nos permite interactuar con muchos aspectos de lado del cliente de forma muy sencilla y mucho más rápida que las posibles formas tradicionales. A continuación 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 código "Blade", sin esto no sería posible que se ejecute dicho código y la extensión ".php" indica el tipo de archivo lo cual no necesita explicación.

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.htmlhttp://enlawebdekaaf.blogspot.com/2014/06/laravel-controladores.html

Una vez tengamos la vista correctamente ruteada empezamos poniendo el siguiente código en "ejemploblade.blade.php".

?1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

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

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

 

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

 

 {{Form::label('passContrasenia', 'Contraseña')}}

 

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

 

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

 

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

 {{Form::checkbox('checkConocimiento', 'Java', false, array('id' => 'checkConocimientoJava'))}}

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

 {{Form::checkbox('checkConocimiento', 'CSharp', false, array('id' => 'checkConocimientoCSharp'))}}

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

 {{Form::checkbox('checkConocimiento', 'Php', false, array('id' => 'checkConocimientoPhp'))}}

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

 {{Form::checkbox('checkConocimiento', 'Node', false, array('id' => 'checkConocimientoNode'))}}

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

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

 {{Form::checkbox('checkConocimiento', 'Ruby', false, array('id' => 'checkConocimientoRuby'))}}

 

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

 

 {{Form::label('radioSexoM', 'Masculino')}}

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

 {{Form::label('radioSexoF', 'Femenino')}}

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

 

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

 

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

 

 {{Form::label('selectPais', 'País')}}

 

 {{Form::select('selectPais', array(

  'peru' => 'Perú',

  'mexico' => 'México',

  'espania' => 'España',

  'venezuela' => 'Venezuela',

  'chile' => 'Chile',

  'colombia' => 'Colombia'))

 }}

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

 

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

 {

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

 })}}

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

 

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

 

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

{{Form::close()}}

En el código anterior se puede apreciar la facilidad con la que Ud puede insertar código HTML mediante blade aprovechando al máximo la funcionalidad de Laravel mediante su poderoso motor de plantillas.

El código HTML generado sería el siguiente.

?1

2

3

4

5

6

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

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

 

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

 

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

 <label for="passContrasenia">Contraseña</label>

 

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

 

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

 

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

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

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

 <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">

 

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

 

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

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

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

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

 

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

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

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

 

 <label for="selectPais">País</label>

 

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

  <option value="peru">Perú</option>

  <option value="mexico">México</option>

  <option value="espania">España</option>

  <option value="venezuela">Venezuela</option>

  <option value="chile">Chile</option>

  <option value="colombia">Colombia</option>

 </select>

 

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

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

 

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

</form>

Como puede entenderse, es posible usar cualquier de los dos códigos 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 también

puede hacer las respectivas comparaciones en el ejemplo anterior si así lo desea para ver cual le convendría usar según sus habilidades.

Sin más 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 intención de ahorrar tiempo de desarrollo en la parte

del diseño y podamos heredar de una misma plantilla para todas las vistas de una

aplicación.

Vea el ejemplo en GitHub

Procedimiento: 

Custom Search

Para trabajar con los Template de Laravel primero debemos tener en cuenta que se

maneja código del motor de plantillas Blade por lo que es necesario asignar a la vista del

Template y a los mismos que heredarán este, la extensión ".blade.php". Para más

información 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 código.

?1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

<!doctype html>

<html lang="es">

<head>

 <meta charset="UTF-8">

 <title>Document</title>

 {{HTML::style('css/cssTemplate.css')}}

</head>

<body>

 <header>

  <h1>Esta es la cabecera</h1>

 </header>

 <nav id="menuPrincipal">

  <ul>

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

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

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

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

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

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

  </ul>

 </nav>

 <section id="sectionCuerpoTemplate">

  @yield('sectionCuerpo')

 </section>

24

25

26

27

28

29

30

 <footer>

  ©En la Web de KAAF

 </footer>

</body>

</html>

Como pueden ver en el código 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 código 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 código.

?1

2

3

4

5

6

7

8

9

10

11

12

13

h1

{

 color: white;

}

footer

{

 background-color: #EEEEEE;

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

 padding: 7px;

}

header

{

 background-color: #1570A6;

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

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

 padding: 7px;

 z-index: 1000;

}

#menuPrincipal ul

{

 list-style: none;

 margin: 0px;

 padding: 0px;

}

#menuPrincipal li

{

 display: inline-block;

}

#sectionCuerpoTemplate

{

 background-color: #FFFFFF;

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

 min-height: 400px;

 padding: 7px;

}

Una vez realizado sólo tendremos que crear nuestros clientes para el Template y lo

haremos en la siguiente estructura.

Realizado esto, lógicamente 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, sólo faltaría que en cada vista que

queramos heredar el Template agreguemos el código que realice dicha herencia. El

siguiente código es un ejemplo para el archivo "index.blade.php".

?1

2

3

4

5

@extends('template')

@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 varía 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 aplicación deberá verse bajo el diseño general del

Template.

Para obtener el código completo, Ud. puede descargarlo en la dirección de Git Hub de la

parte superior (Al inicio de la publicación).

Para dudas y consultas puede comentar el post.

Sin más 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 información 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 código 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 también ya ruteamos la vista "ver.blade.php" sólo tenemos que hacer cambios muy pequeños 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.

?1

2

3

4

5

6

public function actionVer()

{

 $listaTUsuario=TUsuario::all();

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

}

Donde estamos haciendo uso del método estático "all()" para extraer toda la información de la tabla "TUsuario" y en segunda instancia estamos enviando la variable donde se almacenó esos datos a la vista.

Ahora sólo 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 código.

?1

2

3

4

5

6

7

8

9

10

11

12

13

14

@extends('template')

@section('sectionCuerpo')

 <h2>Ver</h2>

 <table border="1">

  <thead>

   <th>ID</th>

   <th>NOMBRE</th>

   <th>APELLIDO</th>

   <th>CORREO ELECTRÓNICO</th>

   <th>CONTRASEÑA</th>

   <th>FECHA DE NACIMIENTO</th>

   <th>SEXO</th>

   <th>FECHA DE REGISTRO</th>

   <th>FECHA DE MODIFICACIÓN</th>

  </thead>

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

  <tbody>

   @foreach($listaTUsuario as $value)

    <tr>

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

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

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

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

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

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

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

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

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

    </tr>

   @endforeach

  </tbody>

 </table>

@stop

Como puede ver en el código anterior, sólo 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, deberíamos 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 información. Esto es algo realmente muy sencillo bajo el manejo de su ORM Eloquent.

Realizaremos este ejemplo y podrán ver que son unas cuantas líneas de código muy sencillas de entender y fácil 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 parámetro 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 botón que al darle clic llamará a una función la cual recibirá como parámetro el "Id" del usuario que se quiere editar. Esto lo haremos en el archivo "ver.blade.php" ya habiéndolo trabajando antes tendremos que dejarlo de la siguiente forma, donde incluimos la función necesario sobre Javascript.

?1

2

3

4

5

6

7

8

9

10

11

12

13

14

@extends('template')

@section('sectionCuerpo')

 <h2>Ver</h2>

 <table border="1">

  <thead>

   <th>ID</th>

   <th>NOMBRE</th>

   <th>APELLIDO</th>

   <th>CORREO ELECTRÓNICO</th>

   <th>CONTRASEÑA</th>

   <th>FECHA DE NACIMIENTO</th>

   <th>SEXO</th>

   <th>FECHA DE REGISTRO</th>

   <th>FECHA DE MODIFICACIÓN</th>

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

   <th></th>

  </thead>

  <tbody>

   @foreach($listaTUsuario as $value)

    <tr>

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

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

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

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

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

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

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

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

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

     <td><input type="button" id="{{$value->idUsuario}}" value="Editar" onclick="editarUsuario(this.id);"></td>

    </tr>

   @endforeach

  </tbody>

 </table>

 <script>

  function editarUsuario(idUsuario)

  {

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

  }

 </script>

@stop

Como se puede ver, ahí tenemos un botón en la tabla que envía al "actionEditar" del

controlador "UsuarioController" y para que todo funcione bien, el controlador "actionEditar" debe quedar de la siguiente forma.

?1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

public function actionEditar($idUsuario=null)

{

 if($_POST)

 {

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

  (

   array

   (

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

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

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

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

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

   )

  );

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

 }

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

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

}

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

@extends('template')

@section('sectionCuerpo')

 <h2>Editar</h2>

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

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

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

  

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

  

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

  

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

  

  <label for="txtCorreoElectronico">Correo electrónico</label>

  

  <input type="text" id="txtCorreoElectronico" name="txtCorreoElectronico" value="{{$tUsuario->correoElectronico}}">

  

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

  

  <input type="date" id="txtFechaNacimiento" name="txtFechaNacimiento" value="{{$tUsuario->fechaNacimiento}}">

  

29

30

31

32

33

34

35

36

37

38

39

40

41

42

  <label>Sexo</label>

  

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

  <input type="radio" id="radioSexoM" name="radioSexo" value="1" {{$tUsuario->sexo==1 ? 'checked=true' : ''}}>

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

  <input type="radio" id="radioSexoF" name="radioSexo" value="0" {{$tUsuario->sexo==0 ? 'checked=true' : ''}}>

  

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

 </form>

@stop

Habiendo realizado todo lo anterior, tendremos listo la edición de usuarios mediante Laravel y su ORM Eloquent.

LARAVEL: CRUD CON ELOQUENT PARTE 4 (FINAL)-ELIMINAR USUARIO

Aquí les traigo la última publicación 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 sólo requiere realizar una simple consulta por el "idUsuario" y posteriormente acceder al método "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 parámetro el cual será el Id del usuario para eliminar este.

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

Ahora debemos agregar el botón eliminar en nuestra tabla de lista de usuario y crear la función 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 debería quedar de la siguiente manera.

?1

2

3

4

5

6

7

8

9

@extends('template')

@section('sectionCuerpo')

 <h2>Ver</h2>

 <table border="1">

  <thead>

   <th>ID</th>

   <th>NOMBRE</th>

   <th>APELLIDO</th>

   <th>CORREO ELECTRÓNICO</th>

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

   <th>CONTRASEÑA</th>

   <th>FECHA DE NACIMIENTO</th>

   <th>SEXO</th>

   <th>FECHA DE REGISTRO</th>

   <th>FECHA DE MODIFICACIÓN</th>

   <th></th>

   <th></th>

  </thead>

  <tbody>

   @foreach($listaTUsuario as $value)

    <tr>

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

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

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

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

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

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

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

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

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

     <td><input type="button" id="{{$value->idUsuario}}" value="Editar" onclick="editarUsuario(this.id);"></td>

     <td><input type="button" id="{{$value->idUsuario}}" value="Eliminar" onclick="eliminarUsuario(this.id)"></td>

    </tr>

   @endforeach

  </tbody>

 </table>

 <script>

  function editarUsuario(idUsuario)

  {

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

  }

38

39

40

41

42

43

44

45

46

47

48

  function eliminarUsuario(idUsuario)

  {

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

  }

 </script>

@stop

Por último para que funcione todo esto sólo hace falta agregar el código del "action" en el controlador, donde realizaremos una consulta por "primary key" en este caso por "idUsuario" y luego haremos uso del método "delete" de Eloquent para borrar el registro.

El "actionEliminar" estaría quedando de la siguiente manera.

?1

2

3

4

5

6

7

8

public function actionEliminar($idUsuario=null)

{

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

 $tUsuario->delete();

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

}

Habiendo realizado todos los pasos anteriores, ya debería funcionar nuestra acción 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: ENCRIPTACIÓN Y DESENCRIPTACIÓN DE CONTRASEÑAS

En este post aprenderemos a como realizar encriptaciones de cadenas de texto (Contraseñas) en Laravel. Así mismo también veremos la manera de desencriptar para realizar posibles validaciones de inicio de sesión en caso tengamos contraseñas 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 encriptación de contraseñas haciendo uso de sus métodos crypt y decrypt para encriptar o desencriptar respectivamente.

El código para el ejemplo lo tenemos a continuación.

route.php

?

1 <?php

2

3

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

IndexController.php

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<?php

class IndexController extends BaseController

{

 public function actionIndex()

 {

  if($_POST)

  {

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

   {

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

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

   }

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

   {

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

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

   }

  }

  return View::make('index');

 }

}

?>

25

26

index.blade.php

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

<!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 contraseña a encriptar</label>

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

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

 </form>

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

  <label for="txtContraseniaEncriptada">Ingrese la contraseña 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>

Como puede ver, es muy sencillo realizar el manejo de encriptación sobre Laravel con lo

que podemos poner más seguras nuestras aplicaciones al momento de querer guardar información privada.

LARAVEL: EXPORTAR DATOS A EXCEL

En este post veremos como realizar exportación de datos a un formato excel desde Larave. Sólo 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

2

3

"require": {

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

  "maatwebsite/excel": "~1.2.1"

 },

4

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, sólo creamos la ruta necesaria y en un action de nuestro controlador manejamos el código para crear un archivo excel y descargarlo.

?1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<?php

class IndexController extends BaseController

{

 public function actionIndex()

 {

  Excel::create('Mi primer archivo excel desde Laravel', function($excel)

  {

   $excel->sheet('Sheetname', function($sheet)

   {

    $sheet->mergeCells('A1:C1');

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

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

    {

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

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

     $cells->setAlignment('center');

     $cells->setValignment('center');

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

    });

    $sheet->setWidth(array

     (

      'D' => '50'

     )

    );

    $sheet->setHeight(array

     (

      '1' => '50'

     )

    );

    $data=[];

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

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

   });

  })->download('xlsx');

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

 }

}

?>

Habiendo realizado todos los pasos anteriores, ya deberíamos tener listo la exportación de datos a un archivo excel. Si quiere más detalles de este post, vea el siguiente video.

LARAVEL: VISUALIZAR DATOS EN FORMATO PDF

En este post veremos como realizar visualización e impresión de datos sobre un formato PDF desde Laravel. Sólo necesitamos instalar el módulo 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

2

3

"require": {

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

  "thujohn/pdf": "dev-master"

4  },

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, sólo creamos la ruta necesaria y en un action de nuestro controlador manejamos el código para crear un archivo PDF.

?1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<?php

class IndexController extends BaseController

{

 public function actionIndex()

 {

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

  $html = '<html><body>'

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

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

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

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

 }

}

?>

Habiendo realizado todos los pasos anteriores, ya deberíamos tener listo la visualización de datos sobre un archivo PDF. Si quiere más 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 aplicación por el tiempo que definamos y sesiones persistentes sólo a una redirección de página para posible envío de mensajes en respuesta a cierta actividad, así mismo veremos el tema de cierre o eliminación de la sesión.

Procedimiento: 

Custom Search

Para este ejemplo trabajaremos con cuatro vistas los cuales nos servirán para poder visualizar y analizar el comportamiento de las sesiones normales, las sesiones flash y el cierre de sesión.

Primero tendremos que crear las rutas de cada vista lo cual lo podemos ver a continuación.

?1

2

3

4

5

6

7

<?php

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 código del controlador que trabajará con todos los action anteriormente definidos.

El IndexController debería quedar de la siguiente manera.

?1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<?php

class IndexController extends BaseController

{

 public function actionIndex()

 {

  if($_POST)

  {

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

   return View::make('index');

  }

  return View::make('index');

 }

 public function actionPaginaDos()

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

 {

  if($_POST)

  {

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

   return Redirect::to('/');

  }

  return View::make('paginados');

 }

 public function actionPaginaTres()

 {

  return View::make('paginatres');

 }

 public function actionPaginaCuatro()

 {

  return View::make('paginacuatro');

 }

 public function actionCerrarSesion()

 {

  Session::forget('miSesionTexto');

  return View::make('index');

 }

}

?>

44

45

Finalmente creamos las vistas que responderán a cada action.

index.blade.php

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

<!doctype html>

<html lang="es">

<head>

 <meta charset="UTF-8">

 <title>Document</title>

</head>

<body>

 <ul>

  <li><a href="/APPENLAWEBDEKAAF/public/">Página inicio</a></li>

  <li><a href="/APPENLAWEBDEKAAF/public/paginados">Página dos</a></li>

  <li><a href="/APPENLAWEBDEKAAF/public/paginatres">Página tres</a></li>

  <li><a href="/APPENLAWEBDEKAAF/public/paginacuatro">Página cuatro</a></li>

 </ul>

 Mi Sesión: {{Session::get('miSesionTexto', 'No existe sesión')}} | <a href="/APPENLAWEBDEKAAF/public/cerrarsesion">Cerrar sesión</a>

 

 Mi Sesión flash: {{Session::get('miSesionFlash', 'No existe sesión 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 sesión">

 </form>

</body>

</html>

24

paginados.blade.php

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

<!doctype html>

<html lang="es">

<head>

 <meta charset="UTF-8">

 <title>Document</title>

</head>

<body>

 <ul>

  <li><a href="/APPENLAWEBDEKAAF/public/">Página inicio</a></li>

  <li><a href="/APPENLAWEBDEKAAF/public/paginados">Página dos</a></li>

  <li><a href="/APPENLAWEBDEKAAF/public/paginatres">Página tres</a></li>

  <li><a href="/APPENLAWEBDEKAAF/public/paginacuatro">Página cuatro</a></li>

 </ul>

 Mi Sesión: {{Session::get('miSesionTexto', 'No existe sesión')}}

 

 Mi Sesión flash: {{Session::get('miSesionFlash', 'No existe sesión flash')}}

 

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

  <label for="txtMiSesionFlash">Ingrese sesión flash</label>

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

  <input type="submit" value="Asignar sesión flash">

 </form>

</body>

</html>

26

paginatres.blade.php

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<!doctype html>

<html lang="es">

<head>

 <meta charset="UTF-8">

 <title>Document</title>

</head>

<body>

 <ul>

  <li><a href="/APPENLAWEBDEKAAF/public/">Página inicio</a></li>

  <li><a href="/APPENLAWEBDEKAAF/public/paginados">Página dos</a></li>

  <li><a href="/APPENLAWEBDEKAAF/public/paginatres">Página tres</a></li>

  <li><a href="/APPENLAWEBDEKAAF/public/paginacuatro">Página cuatro</a></li>

 </ul>

 Mi Sesión: {{Session::get('miSesionTexto', 'No existe sesión')}}

 

 Mi Sesión flash: {{Session::get('miSesionFlash', 'No existe sesión flash')}}

 

 Página tres

</body>

</html>

paginacuatro.blade.php

?

1 <!doctype html>

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<html lang="es">

<head>

 <meta charset="UTF-8">

 <title>Document</title>

</head>

<body>

 <ul>

  <li><a href="/APPENLAWEBDEKAAF/public/">Página inicio</a></li>

  <li><a href="/APPENLAWEBDEKAAF/public/paginados">Página dos</a></li>

  <li><a href="/APPENLAWEBDEKAAF/public/paginatres">Página tres</a></li>

  <li><a href="/APPENLAWEBDEKAAF/public/paginacuatro">Página cuatro</a></li>

 </ul>

 Mi Sesión: {{Session::get('miSesionTexto', 'No existe sesión')}}

 

 Mi Sesión flash: {{Session::get('miSesionFlash', 'No existe sesión flash')}}

 

 Página cuatro

</body>

</html>

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 más información 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 validación de datos en el Framework Laravel mediante la clase Validator que nos proporciona ésta.

Veremos casos muy sencillo para poder entender de una manera fácil 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

create database DBAPPENLAWEBDEKAAF;

use DBAPPENLAWEBDEKAAF;

4

5

6

7

8

9

10

11

create table TPersona

(

idPersona int auto_increment,

nombreCompleto varchar(70) not null,

correoElectronico varchar(70) not null,

edad int not null,

primary key(idPersona)

);

Seguidamente no deben olvidarse configurar los parámetros de conexión 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.

?1

2

3

<?php

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

El modelo será TPersona.php

?

1

2

3

4

5

6

7

8

<?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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

class IndexController extends BaseController

{

 public function actionIndex()

 {

  if($_POST)

  {

   $validator=Validator::make

   (

    array

    (

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

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

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

    ),

    array

    (

     'nombreCompleto' => 'required',

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

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

    )

   );

   if($validator->fails())

   {

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

    {

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

    }

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

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

    {

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

    }

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

    {

     return View::make('index', array('mensaje' => 'Corrija el dato edad. La edad debe ser entre 15 y 50 años'));

    }

   }

   $tPersona=new TPersona;

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

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

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

   $tPersona->save();

   return View::make('index', array('mensaje' => 'Operación realizada correctamente'));

  }

  return View::make('index');

 }

}

?>

Finalmente creamos la vista que tendrá los campos para insertar información a la base de datos los cuales también serán validados mediante Validator en el controlador.

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

<!doctype html>

<html lang="es">

<head>

 <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">

  

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

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

  

  <label for="txtEdad">Edad</label>

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

  

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

 </form>

</body>

</html>

Una vez realizado todo lo anterior tendremos listo nuestro ejemplo de validaciones sobre Laravel. Para más información 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 módulo 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 módulo necesario, lo cual lo podemos ver en uno de mis post anteriores que sería el del siguiente enlace.

http://enlawebdekaaf.blogspot.com/2014/09/laravel-exportar-datos-excel.html

Una vez instalado el módulo de Excel sólo será necesario aplicar el siguiente código en el controlador para hacer lectura del archivo.

?1

2

3

<?php

class IndexController extends BaseController

{

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

 public function actionIndex()

 {

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

  {

   $result=$archivo->get();

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

   {

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

';

   }

  })->get();

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

 }

}

?>

Lógicamente es necesario rutear este controlador con su respectivo action para que pueda ejecutarse correctamente, pero al terminar la ruta correcta y hacer correr este código podremos ver que se cargan datos según el archivo que se a leído manejando las cabeceras adecuadamente en el archivo, lo cual posteriormente se convierten en objetos para leer las columnas.

Para más información será necesario ver el video que se puede apreciar a continuación.

LARAVEL: DIRECTORIO TELEFÓNICO PARTE 1-CREACIÓN DE BASE DE DATOS

Aquí empezamos con una secuencia pequeña de manuales donde aprenderemos a realizar una aplicación simple sobre el framework Laravel "Aplicación de directorio telefónico" aplicando todos los conocimientos previos hasta el momento, incluyendo algunos otros nuevos temas que aún no se tocaron anteriormente.

Procedimiento: 

Custom Search

Lo primero será crear nuestra base de datos basado en sólo 2 tablas pero esto nos será muy funcional al momento de implementar nuestra pequeña aplicación usando todos los estándares de desarrollo de software y demás.

El script de la base de datos vendría a ser el siguiente.

?1

2

3

create database DBAPPDIRECTORIOTELEFONICO;

use DBAPPDIRECTORIOTELEFONICO;

create table TUsuario

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

(

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,

primary key(idUsuario)

);

create table TDirectorio

(

idDirectorio int auto_increment,

idUsuario int not null,

nombreCompleto varchar(70) not null,

direccion varchar(700) not null,

telefono varchar(20) not null,

fechaNacimiento date not null,

created_at datetime not null,

updated_at datetime not null,

foreign key(idUsuario) references TUsuario(idUsuario)

on delete cascade on update cascade,

primary key(idDirectorio)

);

Una vez tengamos el script anterior, sólo hace falta correr dicho script y tendremos lista la base de datos. Para más explicación Ud. puede ver el video que se encuentra en la parte inferior.

Ahora, para nuestro primero manual sólo haría 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 también 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 dirección

http://localhost/APPDIRECTORIOTELEFONICO/public/

ya deberíamos tener el logo de Laravel cargado que vendría a ser el "Hola mundo" del proyecto en blanco sobre Laravel.

Hasta este punto lo dejaremos en este post y seguiremos posteriormente con más partes de la aplicación hasta terminar el pequeño proyecto y publicarlo en internet.

LARAVEL: DIRECTORIO TELEFÓNICO PARTE 2-CREACIÓN DEL LAYOUT

Aquí en la segunda parte del directorio telefónico sobre Laravel realizaremos la creación del tamplate o layout con lo cual tendremos un diseño general el cual podremos heredar posteriormente a todas las vistas que lo requieran dentro de nuestra aplicación.

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 sólo 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 heredarán el layout así como también el layout dispongan de la extensión "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 sólo creamos el layout para posteriormente darle un diseño más agradable para los usuarios que puedan ingresar a nuestra aplicación.

LARAVEL: DIRECTORIO TELEFÓNICO PARTE 3-FORMULARIO DE REGISTRO DE USUARIOS

Aquí continuando con la tercera parte de nuestro directorio telefónico sobre Laravel veremos y trataremos el diseño básico del layout incluido ya de una vez el formulario para el registro de usuarios en el cual dejaremos todo listo para empezar con la interacción sobre la base de datos.

Procedimiento: 

Custom Search

Esta vez organizaremos correctamente el diseño 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 configuración y demás para un siguiente post.

En esta parte sólo estamos viendo el diseño del Layout dejando las partes del menú y la sección que posteriormente será para el inicio de sesión, así mismo dejamos listo el formulario para el registro de usuarios que lo haremos en el siguiente post.

LARAVEL: DIRECTORIO TELEFÓNICO PARTE 4-REGISTRAR USUARIO Y ENCRIPTAR CONTRASEÑA

Aquí en la cuarta parte del directorio telefónico sobre Laravel realizaremos la inserción de datos a la tabla usuario, así mismo veremos la manera de encriptar la contraseña del usuario.

Procedimiento: 

Custom Search

Para interactuar con la base de datos primero deberemos configurar el archivo database.php donde indicaremos los datos de conexión. 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 interactúe 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 inserción de usuarios y también la encriptación de su contraseña para disponer de su información más segura al momento de guardarlas.

LARAVEL: DIRECTORIO TELEFÓNICO PARTE 5-VALIDACIÓN DE REGISTRO DE USUARIO (CLASE VALIDATOR)

Continuando con el directorio telefónico sobre Laravel, ahora veremos el uso de la clase Validator con la cual veremos como validar y restringir información en el registro de datos sobre la base de datos.

Procedimiento: 

Custom Search

Debemos entender que la validación de datos se puede hacer en más de una capa sobre nuestra aplicación. 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 tendrán mucho que ver según 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 demás, será necesario validar en las 3 capas antes mencionadas. Si el sistema sólo es para un público cerrado con pocos o nada de conocimiento en desarrollo de software bastaría con hacer las validaciones en el cliente, con lo cual también ahorraríamos la carga de procesos al servidor y así sucesivamente debemos ver cada caso para las validaciones.

En nuestro caso lo haremos en el servidor, más que por la seguridad lo haremos para que aprendamos como hacerlas mediante el framework Laravel y su clase Validator.

LARAVEL: DIRECTORIO TELEFÓNICO PARTE 6-ALERTAS Y RENDERIZACIÓN DE ERRORES

En esta parte 6 de nuestro directorio telefónico sobre Laravel veremos el manejo de

alertas y la renderización de datos basado en el envío de mensajes mediante Sesiones Flash en el redireccionamiento de una página.

Procedimiento: 

Custom Search

Haremos uso de sesiones flash para enviar parámetros luego de una redirección ya que si tratamos de enviar los datos como en una simple renderización como cuando muestra la visa con View::make verán que no es posible porque al redireccionar se pierde dicha información.

Para la parte de los mensajes usaremos esa forma anteriormente mencionada en conjunto de envíos normales en la renderización para el caso de los errores así devolviendo también los datos del formulario para no volver a escribir estos y para los registros correctos haremos uso de las sesiones flash.

También añadiremos un formato o fuente de texto ya sea definido por un color específico de texto según sea la alerta (Correcto o incorrecto).

LARAVEL: DIRECTORIO TELEFÓNICO PARTE 7-INICIO DE SESIÓN

Parte 7 del directorio telefónico sobre Laravel donde trataremos el tema de inicio de

sesión 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 autenticación de usuario lo cual tendremos que hacerlo interactuando con las contraseñas encriptadas siendo un caso normal ya que es la forma de mantener seguridad y nos loguearemos operando con dichas contraseñas y los usuarios que ya fueron registrados con anterioridad.

LARAVEL: DIRECTORIO TELEFÓNICO PARTE 8-CIERRE DE SESIÓN

Esta vez continuaremos con Laravel viendo el tema del cierre de sesión donde también se hará mención de como realizar la configuración básica del tiempo de sesión en inactividad que podemos darle a nuestras sesiones de aplicación.

Procedimiento: 

Custom Search

Para realizar el cierre de sesión en el framework Laravel deberemos usar la clase Session y la función forget del mismo donde sólo tendremos que indicar el nombre o key de la sesión que asignamos en el inicio del mismo para de esta forma borrarla y dejarla sin definir.

LARAVEL: DIRECTORIO TELEFÓNICO PARTE 9-DATOS DEL USUARIO

Parte 9 del directorio telefónico sobre Laravel donde veremos la forma de mostrar los datos de un usuario según la sesión 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 función whereRaw para traer el registro de un usuario según la sesión con la cual haya iniciado.

Verán que es muy sencillo de manejar esto mediante Eloquent el cual viene a ser el mapeador de datos de Laravel haciendo muy fácil la interacción con las consultas en la data.

LARAVEL: DIRECTORIO TELEFÓNICO PARTE 10-EDITAR USUARIO

Continuando con nuestro directorio telefónico sobre Laravel, ahora veremos el tema de edición de datos donde trataremos la edición del usuario con el cuál se a iniciado sesión en el sistema.

Procedimiento: 

Custom Search

Primero debemos entender que para realizar la edición 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 envío de la edición tendremos que enviar dicho Id mediante un campo oculto para verificar al usuario en la base de datos y posteriormente editar su información para al final guardar con los

cambios generados.

Veremos que para enviar estos parámetros lo haremos mediante Url's limpias lo cual nos ofrece el mismo framework Laravel facilitándonos mucho el trabajo y manteniendo un estándar al momento de generar dichas Url's.

LARAVEL: DIRECTORIO TELEFÓNICO PARTE 11-VALIDAR EDICIÓN DE USUARIO

En esta parte 11 del directorio telefónico sobre Laravel veremos la validación de datos para editar los usuarios en lo cual aplicaremos la clase Validator de Laravel y la cláusula WhereRaw de Eloquent.

Procedimiento: 

Custom Search

Cuando nosotros queremos editar usuarios en una aplicación, es necesario validar dichos datos de una manera muy similar al de la parte de registro con la pequeña 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 vacíos; pero cuando queremos poner un campo único obviándose a si mismo, ya surge algunos errores que por algún 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 solución a tal; usaremos la función 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 TELEFÓNICO 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 validación de datos para dicho registro de una forma muy rápida 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 telefónico, 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 sesión en la aplicación.

Existen algunas formas de hacer esto, ya sea almacenando el "idUsuario" en una sesión para interactuar con el mismo en cualquier momento o también podríamos consultar de la base de datos mediante el "nombreUsuario" que se almacenó anteriormente en una sesión. Para nuestro caso emplearemos el segundo punto ya que lo del almacenamiento en la sesión es muy sencillo de hacer lo cual también se explica en el video; pero el segundo punto tampoco es complejo, lo que sucede es que muchos pueden optar por esa segunda opción así que dicha opción es la que usaremos para el ejemplo.

LARAVEL: DIRECTORIO TELEFÓNICO 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 interacción de la información 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 más de una tabla sobre una base de datos y corremos el riesgo que algo salga mal en una de ellas, con lo que afectaría negativamente a las demás 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 información a 3 tablas en nuestra base de datos; si falla algo en la segunda tabla después de ya haber registrado la información en la primera, deberá entrar en acción la transacción con lo que se debe procesar que si algo falló en la inserción de una de las 3 tablas debe restaurar al estado anterior a la apertura de la transacción, es decir, así como registró información en la primera tabla y falló en la segunda, los datos de la primera deberán 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 aplicarían las transacción en los diferentes lenguajes de programación.

Para nuestro caso sólo usaremos Laravel y la clase DB mediante los métodos de transacción que nos facilita este (beginTransaction, commit y rollback).

LARAVEL: DIRECTORIO TELEFÓNICO PARTE 14-LISTAR DIRECTORIO POR SESIÓN INICIADA

Avanzando más con nuestro directorio telefónico sobre Laravel, ahora veremos la manera de listar datos del directorio filtrado por el usuario que a iniciado sesión con lo que veremos sólo información relevante e independiente por usuario.

Procedimiento: 

Custom Search

Existen situaciones en que tenemos que filtrar información según cierto parámetro en el sistema, como en este caso que lo necesitamos mediante el usuario que haya iniciado sesión en nuestra aplicación. Esto es muy sencillo de manejar y aún más mediante el ORM Eloquent de Laravel ya que nos ofrece el acceso de forma muy sencilla a las consultas mediante cláusulas WhereRaw y el paso de parámetros al mismo.

En este post veremos el filtro mediante una sesión de lo cual haremos lectura para identificar el "Primary Key" del usuario y así posteriormente elegir la información necesaria según le pertenezca al usuario que se logueó en el sistema.

LARAVEL: DIRECTORIO TELEFÓNICO PARTE 15-EDITAR LISTA DE DIRECTORIO

Aquí en la parte 15 del directorio telefónico sobre Laravel veremos la edición de datos en la lista de directorio con lo que podremos elegir cualquiera de toda la lista para modificar y guardar su información en la base de datos.

Procedimiento: 

Custom Search

Para editar los datos de la lista del directorio, tendremos que pasarle como parámetro el "Primary Key" de este a una función 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 aún más con el ORM Eloquent que nos ofrece Laravel ya que sólo tendremos que usar la función "find" y posteriormente luego de haber cambiado los datos del modelo aplicaremos la función "save".

LARAVEL: DIRECTORIO TELEFÓNICO PARTE 16-ELIMINAR REGISTRO DE DIRECTORIO

Parte 16 del directorio telefónico sobre Laravel donde trataremos la eliminación 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 función "delete" de la clase instanciada como modelo mediante el "Primary Key" y la función "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 función delete aplicado a la variable contenedora del modelo.

LARAVEL: DIRECTORIO TELEFÓNICO PARTE 17-FILTROS DE SESIÓN

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

Procedimiento: 

Custom Search

Laravel nos ofrece filtros de acceso los cuales se lanzan antes o después de cumplir con la petición HTTP. En nuestro caso usaremos el evento que se da antes de cumplir la petición con lo que podremos restringir acceso y controlar las sesiones de la aplicación manteniendo con mayor seguridad y consistencia dicha aplicación.

LARAVEL: DIRECTORIO TELEFÓNICO PARTE 18-EXPORTAR DIRECTORIO A EXCEL

Aquí en la parte 18 del directorio telefónico sobre Laravel trataremos el tema de exportación de datos a excel mediante el módulo "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.htmlAunque en el enlace anterior sólo cargamos datos creados en el mismo controlador, en esta publicación veremos la manera de cargar y descargar datos a excel desde la base de datos con lo que conseguiremos interactuar información de la data con datos tangibles y físicos los cuales lógicamente pueden ser impresos ya desde el formato excel descargado.

LARAVEL: DIRECTORIO TELEFÓNICO 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 módulo FPDF de Laravel .

Procedimiento: 

Custom Search

FPdf es un módulo o librería que se puede implementar en Laravel o Php nativo lo cual es muyoptimo 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 información en esta.