Laravel, parte 2: Ruteo

En Laravel las urls y las peticiones funcionan diferente a las aplicaciones web tradicionales de PHP, en donde una url por lo general apunta a un archivo, por ejemplo un .php, y de esta manera se procesa la petición con la lógica que lleva consigo ese archivo.

Osea, si nosotros por ejemplo tuviésemos una url con este aspecto:

https://pagina.com/contacto.php

Podemos suponer que dentro de la carpeta pública hay un archivo con ese mismo nombre: «contacto.php» que es el que tendrá la lógica dicha petición, cuando un usuario ingresa a esa url.

Sin embargo en Laravel la cosa funciona diferente, ya que nosotros seremos los encargados de definir el aspecto de la url.

Para ello vamos a iniciar nuestra aplicación como hicimos en la publicación pasada.

Abrimos la consola y entramos dentro de nuestro proyecto, como en mi caso yo uso Xampp:

cd C:\xampp\htdocs\mi_proyecto_laravel

E iniciamos el servidor:

php artisan serve

Ahora vamos a nuestro proyecto y entramos en app -> routes.php editamos este archivo.

Debajo de todo vamos a agregar la siguiente línea:

Route::get('saludo', function(){
   return "Hola, petición procesada te saluda.";
});

Dentro de ese archivo definiremos las rutas de nuestra aplicación, en este caso hemos definido una con el path «saludo», que ingresamos como primer parámetro del método get() de la clase Route. Con respecto al segundo parámetro, se refiere a la acción que hará cuando el usuario ingrese a esa página, en este caso solamente devolverá un texto con el mensaje: «Hola, petición procesada te saluda.»

Ahora para probar esto simplemente iremos a:

https://localhost:8000/saludo

Y allí comprobaremos lo que acabo de decir.

Sin embargo, muchas veces las urls presentan un aspecto más dinámico, por ejemplo supongamos que tenemos una url que recibirá un id para buscar un registro en una base de datos. Si bien la url tendrá siempre el mismo aspecto, habrá algo, un valor que puede variar.

Por ejemplo podríamos agregar una url con este aspecto:

Route::get('saludo/{nombre}', function($nombre){
   return "Hola $nombre";
});

Aquí la url será igual a la que creamos antes, pero tendrá un valor $nombre que tendrá una suerte de variable de tipo $_GET. Si ahora vamos a:

https://localhost:8000/saludo/fernando

Entonces nos devolverá un mensaje:

Hola fernando

También podemos crear urls que puedan recibir parámetros de forma opcional. Entonces vamos a borrar las dos que creamos hasta ahora y vamos a crear una nueva:

Route::get('saludo/{nombre?}', function($nombre=null){
   if($nombre){
      return "Hola $nombre";
   }else{
      return 'Hola desconocido';
   }
});

Si te has fijado bien, dentro de la url agregamos una variable que al final tendrá el caracter ?, lo que indicará que esta variable puede ser opcional:

'saludo/{nombre?}'

Y cuando llamamos a la acción, la función recibe un parámetro que por defecto es null:

function($nombre=null)

Así que si ahora ingresamos en nuestro navegador:

https://localhost:8000/saludo/tito

Nos devolverá:

Hola tito

Pero si en cambio no ingresamos el parámetro dentro de la url:

https://localhost:8000/saludo

Entonces como no existe, así que entrará por el lado false del if y nos devolverá:

Hola desconocido

También podemos agregar más variables dentro de la url. Por ejemplo:

Route::get('autos/{marca}/{color}', function($marca, $color){
   return "El auto es $marca de color $color";
});

Y ahora ingresamos en nuestro navegador la url:

https://localhost:8000/autos/ford/blanco

Entonces nos devolverá por pantalla algo como:

El auto es ford de color blanco

Pero la clase Route además de devolver texto también puede cargar código html entero. Por ejemplo si nos fijamos en este mismo archivo, seguramente verás unas líneas de código:

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

Aquí es donde se define el mensaje de bienvenida que vimos cuando instalamos Laravel. Se llama en la página principal, por eso ‘/’, y Llamamos a una view o vista llamada hello. Pero más adelante veremos vistas.

Saludos!

Anterior: Laravel, parte 1: Introducción e instalación

Siguiente: Laravel, parte 3: Modelo Vista Controlador


10 Respuestas a “Laravel, parte 2: Ruteo”

    1. Sí, es cierto, en lo personal Laravel es mi Framework preferido.

      Gracias a vos por comentar José Luis.

      Que tengas un lindo día.

      Saludos!

  1. He visto varios tutoriales en los cuales siempre solo empiezan a escribir codigo o a crear aplicaciones, pero este me ha gustado mucho debido a que esplica como funciona el codigo, muy buen trabajo te agradezco por este excelente trabajo, aunque apenas estoy empezando con laravel me ha gustado mucho pero no habia podido encontrar a alguien que explicara el codigo te tambien como es esta pagina Gracias

    1. Muchas gracias, Emmanuel!

      Laravel es muy fácil y te acelera bastante el trabajo. Cualquier cosa en que pueda ayudarte, me decís.

      Saludos!

  2. Excelente aporte, hasta que encuentro algo de Laravel para mi, compre el curso de … pero no logro entenderle por que no es paso a paso como es en este caso, muchas gracias.

    1. Gracias a vos por comentar, cualquier cosa por acá me preguntás.

      Saludos!

      (No diga nombres, muchacho, me compromete el blog: «el curso de …» 😉 )

  3. Fer, estoy empezando con este framework y la verdad que al leer tu sitio me está ayudando mucho, muchas gracias por tu tiempo! Saludos

  4. Amigo tengo problemas con el enrutado. Mi aplicación corriendo en localhost:8000 corre perfectamente, pero estando alojada ya en un host las rutas no son las mismas, no entiendo qué pasa :'(