Comunidad de diseño web y desarrollo en internet online

Primeros pasos con Laravel

¿Ya sabes qué es Laravel, ya lo instalaste y configuraste la base de datos? Muy bien, porque pronto comenzaremos a programar nuestro módulo! Pero antes, en esta cuarta entrega, hablaremos un poco sobre cómo funciona la web:

Los sitios web funcionan con un protocolo llamado HTTP que permite que un cliente se comunique con un servidor y viceversa. Veamos un par de gráficos sencillos sobre esto:



Veamos, esta es una sencilla petición (request) donde tu navegador (Firefox) solicita obtener (GET) la información de la página cristalab.com/tags/laravel. Una vez que leas el tutorial querrás dejar un comentario, para ello llenarás el formulario al final del post y apretarás el botón enviar comentario, en ese momento se producirá otra solicitud:


Ahora Firefox le dice al servidor de cristalab.com que quiere publicar (POST) un comentario, y obviamente le envía la información correspondiente (tu email, tu comentario) y Cristalab devolverá un código 200 (todo bien, la página fue encontrada, el servidor funciona bien), sin embargo el HTML contendrá un mensaje de éxito o un mensaje de error.

En resumen cada petición (Request) tiene un verbo (GET, POST son los más comunes) y una dirección (cristalab.com/tags, laravel.com/docs, etc.). Una respuesta (Response), por otro lado, se constituye de un código (200 si todo está bien, 404 si no fue encontrada la página, 500 error de server, etc.) y el cuerpo de la respuesta, que es por lo general HTML.

Los programadores expertos dirán: ¿Y que hay de los HEADERS? ¿Y las variables de sesión? ¡No te olvides de las cookies!

Lo sé, pero quería mantener esto sencillo; veamos, además de lo que ya les expliqué cada petición y respuesta transporta otros datos como headers, variables de sesión y cookies.

Por ejemplo, un header en una petición puede tener la información de la IP del usuario, en PHP prueben imprimiendo $_SERVER['REMOTE_ADDR'] o de donde proviene el usuario $_SERVER['HTTP_REFERER'] o el navegador que usa $_SERVER['HTTP_USER_AGENT']

Ok pero esta información no es segura…
Dicen los expertos y sí, tienen razón, pero mantengámoslo simple por ahora.

Las variables de sesión (Session) almacenan tu información cuando, por ejemplo, haces login en una página y se borran cuando haces logout. Si le dices a un sitio web que recuerde tu usuario por dos semanas, probablemente eso vaya a una Cookie, que es un pequeño archivo que se almacena en tu computador. Más adelante veremos todo esto en detalle.

Por ahora recuerden Solicitud = Verbo + Dirección. Respuesta = Código + Texto.

Ok, comencemos a programar con Laravel


¡Está bien! Tranquilos. Vamos a comenzar abriendo el archivo app/routes.php

¿Listos?. En este archivo se manejan las rutas de Laravel. Es, digamos, la primera capa de nuestra aplicación.

¿Y qué es lo que hace una ruta?

Verán, una ruta recibe una petición (Request) del usuario y luego de un determinado proceso debe devolver una respuesta (Response):

Entonces esto:

Código :

Route::get('/', function()
{
   return View::make('hello');
});


Significa que cuando el usuario solicite (GET) la página de inicio ( / ) va a recibir respuesta código 200: todo bien y el HTML de la vista hello (views/hello.php).

Como ven Laravel nos brinda una interfaz elegante y sencilla para poder manejar las solicitudes y devolver las respuestas adecuadas.

Por debajo, Laravel se apoya en el excelente componente HTTP Foundation de Symfony2 que encapsula, mejora y normaliza todas las funcionalidades que ya trae el lenguaje PHP para manejar requests y responses.


Obviamente nuestra aplicación necesitará mucho más que una página para funcionar, veamos cómo hacer una segunda página:

Guiándonos por la ruta inicial vamos a escribir otra debajo de esa, así:

Código :

Route::get('cristalab', function()
{
    return View::make('cristalab');
});


Ahora copien y peguen el archivo app/views/hello.php dentro de la misma carpeta, cambien el nombre a cristalab.php, y cambien el contenido de app/views/cristalab.php que hay dentro del <body> </body> por este HTML:

Código :

    <div class="welcome">
        <a href="http://cristalab.com" title="Cristalab"><img src="http://www.cristalab.com/images/header/logo.png"></a>
        <h1>Hello Cristalab!</h1>
    </div>


Ahora escriban en el navegador http://localhost/pruebalaravel/public/cristalab

Excelente, ¿no?

Sí, pero parece muy simple…

Está bien, compliquemos un poco las cosas. Nuestras rutas pueden tener “parámetros” que nos permitirán tener rutas dinámicas, y más complejas, por ejemplo:

Código :

Route::get('hello/{usuario}', function($usuario)
{
    return "Hello $usuario";
});


Si el resultado de una ruta es una cadena de texto (string), Laravel devolverá una respuesta de tipo 200 (todo bien) y el cuerpo será dicho texto.


Ahora en su navegador tipeen: hello/tu-nombre

¡Exacto! Así pueden tener una URL dinámica que responda a cualquier nombre. Lo mismo nos serviría para tags, tutoriales, etc. Otro ejemplo:

Código :

Route::get('tags/{tag}', function($tag)
{
    return "You are browsing $tag tag";
});


¿Quieren limitar un parámetro a que sólo sea números, por ejemplo? Sencillo:

Código :

Route::get('user/edit/{id}', function($id)
{
    return "You are editing the user with the ID #$id";
})
->where('id', '[0-9]+');


Noten el método “where” que se concatena a nuestra ruta y usando una expresión regular muy simple ([0-9]+) se limita a que el parámetro “id” sea compuesto por uno o más números del 0 al 9.

Tipeen user/edit/5 y recibirán el mensaje: "You are editing the user with the ID #5". Pero si ahora tipean user/edit/laravel recibirán un error 404 dado que ni esta ni otra ruta coincide con nuestra petición.

Laravel nos brinda otros tipos de respuestas que analizaremos más adelante.

También veremos las rutas más a fondo así como la creación de controladores en un próximo capítulo.

Espero que les haya gustado. ¿Qué opinan? Quieren que coloque ejemplos más avanzados o que explique todo aún más despacio? ¿Que explique más sobre PHP orientado a objetos o sólo Laravel? Espero leer tu opinión en los comentarios.

Stay tuned.

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate