¿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.
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"; });
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.
Por luis el 17 de Septiembre de 2013
Por MARK el 17 de Septiembre de 2013
Por papirrin el 18 de Septiembre de 2013
Por Mariux el 18 de Septiembre de 2013
papirrin-blog :
si, es laravel 4. saludos
Por iphp el 18 de Septiembre de 2013
Saludos.
Por epileftro85 el 18 de Septiembre de 2013
Por Duilio el 18 de Septiembre de 2013
iphp :
Saludos.
Copied.
Lo colocaré en próximos tutoriales, hablar de los features de PHP 5.3. Para la programación orientada a objetos en general, les recomiendo esto: http://www.cristalab.com/programacion-orientada-objetos/
Prometo seguir al mismo ritmo dentro de las explicaciones pero ir avanzando, en el próximo veremos controladores
Por Niko el 18 de Septiembre de 2013
Saludos!
Por ja el 23 de Septiembre de 2013
Por rezme el 06 de Octubre de 2013
Por xadrijo el 25 de Octubre de 2013
Por Fernando el 09 de Noviembre de 2013
Por el 21 de Noviembre de 2013
Por 28 de Noviembre de 2 el 28 de Noviembre de 2013
Por ebuzz el 06 de Diciembre de 2013
http://localhost/Proyecto/laravel/public/index.php/cristalab/
Si lo pongo como usted lo tiene:
http://localhost/Proyecto/laravel/public/cristalab
Me tira el Not found, por que sera? :s
Por andrestntx el 10 de Diciembre de 2013
PD: Muy buen tutorial
Por José Pérez el 10 de Diciembre de 2013
Linux: $sudo a2enmod rewrite
Y luego reinicia el apache: $ sudo service apache2 restart
Eso debería funcionar.
Por nanotime el 15 de Diciembre de 2013
Lo que no entiendo es por qué (estoy usando laravel 4.1, pero no debería importar) si estoy siguiendo los pasos al pie de la letra en el tuto, me salen estos errores al tratar de abrir cualquier ruta que no sea directamente ../public
Cualquier cosa que vaya mas allá, simplemente lanza un 404, ya sea tratar de cargar la vista public/cristalab o cualquiera de las rutas con parámetros.
¿A alguien le ha pasado?
Por jramirezgranada el 16 de Diciembre de 2013
Por nando_colombia el 17 de Diciembre de 2013
Gracias.
Por Amalia el 23 de Diciembre de 2013
Por master_of_puppetz el 28 de Diciembre de 2013
Por ebuzz el 31 de Diciembre de 2013
sudo a2enmod rewrite
Reinicien apache:
sudo service apache2 restart
Si eso no les funciona probablemente el .htaccess que les puso Laravel no tiene los permisos necesarios y por eso no funciona.
Busquen el httpd.conf (o apache2.conf) y pongan esto:
<Directory "var/www/ProyectoMio">
AllowOverride All
</Directory>
Reinicien Apache:
sudo service apache2 restart
Eso me lo soluciono a mi.
Saludos
Por pejotacebe el 04 de Enero de 2014
Por Carlos Salazar el 22 de Enero de 2014
Por Mariux el 22 de Enero de 2014
pejotacebe :
ordenados en el paso a paso? o te referis a la busqueda de temas dentro del conjunto de tutoriales?
Por master_of_puppetz el 23 de Enero de 2014
Mariux :
pejotacebe :
ordenados en el paso a paso? o te referis a la busqueda de temas dentro del conjunto de tutoriales?
Por Lasquetty el 27 de Enero de 2014
Por Duilio el 04 de Febrero de 2014
Primera parte:
http://www.cristalab.com/tutoriales/introduccion-a-laravel-c111339l/
http://www.cristalab.com/tutoriales/como-instalar-laravel-y-composer-c111363l/
http://www.cristalab.com/tutoriales/configurar-base-de-datos-y-crear-tablas-con-laravel-c111394l/
http://www.cristalab.com/tutoriales/primeros-pasos-con-laravel-c111484l/
http://www.cristalab.com/tutoriales/controladores-y-mvc-con-laravel-c111505l/
http://www.cristalab.com/tutoriales/blade-el-sistema-de-plantillas-de-laravel-c111587l/
Segunda parte:
Tutorial, paso a paso, de cómo escribir un módulo CRUD con Laravel
http://www.cristalab.com/tutoriales/crear-un-modulo-de-usuarios-con-laravel-c111632l/
http://www.cristalab.com/tutoriales/modulo-de-usuarios-ii-integra-bootstrap-con-laravel-c111641l
http://www.cristalab.com/tutoriales/modulo-de-usuarios-iii-crear-un-formulario-con-laravel-c111645l/
http://www.cristalab.com/tutoriales/modulo-de-usuarios-ivvalidar-formulario-y-guardar-datos-con-laravel-c111651l/
http://www.cristalab.com/tutoriales/modulo-de-usuarios-v-lista-y-paginacion-con-laravel-c111682l/
http://www.cristalab.com/tutoriales/modulo-de-usuarios-vi-editar-un-registro-con-laravel-c111683l/
http://www.cristalab.com/tutoriales/modulo-de-usuarios-vii-eliminar-un-registro-con-laravel-c111925l/
Otros artículos:
http://www.cristalab.com/tutoriales/mejora-tus-habilidades-como-programador-c112068l/
http://www.cristalab.com/blog/porque-elegir-laravel-en-vez-de-codeigniter-c111947l/
http://www.cristalab.com/blog/4-tendencias-web-para-el-2014-y-4-que-ya-deberias-dominar-c112142l/
Otros tutoriales:
http://www.cristalab.com/tutoriales/instalar-laravel-en-ubuntu-c112120l/
http://www.cristalab.com/tutoriales/dominio-virtual-para-laravel-en-ubuntu-c112358l/
http://www.cristalab.com/tutoriales/crear-un-login-con-laravel-c112460l/
http://www.cristalab.com/tutoriales/enviar-emails-con-laravel-c111621l/
Inyección de dependencias
http://www.cristalab.com/tutoriales/poo-inyeccion-de-dependencias-c112370l/
http://www.cristalab.com/tutoriales/poo-inyeccion-de-dependencias-ii-c112571l/
http://www.cristalab.com/tutoriales/poo-inyeccion-de-dependencias-en-laravel-iii-c112574l/
Por Freddie el 06 de Febrero de 2014
Por Carlos Salazar el 08 de Abril de 2014
Por anonimo el 23 de Mayo de 2014
Route::any('/', function($user)
{
return View::make('hello');
});
Route::get('main', function()
{
return View::make('main');
});
hice tal cual indican arriba hice una copia de hello.php le cambie el nombre a main.php
Gracias por la ayuda
Por anonimo el 23 de Mayo de 2014
En los comentarios de la primera pagina se encuentra la solucion al problema 404.
Por Eduardo el 13 de Junio de 2014
Por Alejandro Mora el 22 de Septiembre de 2014
Por Jose el 15 de Febrero de 2015
Por JSW el 06 de Enero de 2016
Muy buena explicación. Considero que que está muy clara y precisa.