Comunidad de diseño web y desarrollo en internet

Rutas y filtros en Laravel

Hoy veremos cómo se manejan las rutas en Laravel. La ruta más sencilla es esta:

Código :

Route::get('dime', function() {
   return 'okay';
});


Ahora podemos llamar a esa ruta por un nombre, para que se pueda reutilizar después:

Código :

Route::get('nosotros', array('as' => 'nosotros', function() {
   return View::make('nosotros');
}));


Una aplicación que podemos darle es la de generar un link en una plantilla así:

Código :

{{ link_to_route('nosotros', 'Nosotros'); }}


Esto nos va a generar una etiqueta <a>, suponiendo que nuestro proyecto se encuentra en http://localhost/proyecto:

Código :

<a href="http://localhost/proyecto/nosotros/">Nosotros</a>


ó tal vez, simplemente un link:

Código :

$link = URL::route('nosotros');


ó una redirección:

Código :

return Redirect::route('nosotros');


Al fin de cuentas todas estas posibilidades nos mandará a la misma ruta.

Parámetros en rutas


Este proceso es muy parecido a Node.js, así de sencillo se pueden recibir parámetros:

Código :

Route::get('usuario/{nombre}/{comentario}', function($nombre, $comentario)
{
    return 'Hola Usuario '. $nombre .' tu comnetario es '. $comentario;
})->where(array('commentario' => '[a-z]+', 'nombre' => '[a-z]+')); // se pueden usar las expresiones regular para restringir, si no se aceptan mandará un error 404.


Rutas en grupo


Ahora vamos con algo que me parece genial, agrupar rutas para tener control y legibilidad en el código además de poder aplicar filtros a estas rutas agrupadas.

Con "prefix" damos nombre al grupo:

Código :

Route::group(array('prefix'=>'pagina'), function() {
   Route::get('/nosotros', array('as' => 'nosotrosGET', function() {   
      return 'okay'
   }));
   Route::post('/nosotros', array('as' => 'nosotrosPOST', function() {   
      return 'REokay'
   }));
});


y podemos llamar la ruta como hicimos anteriormente pero ahora más legible:

Código :

return Redirect::route('pagina.nosotrosGET');


Filtros


A estos grupos se les puede aplicar 'before' para aplicarle filtros que están definidos en el archivo filters.php. De esta manera:

Código :

Route::group(array('before'=>'NombreFiltro'), function(){
......


y en filters.php lo creamos:

Código :

Route::filter('NombreFiltro', function()
{
   if(!Auth::check())//no estas logueado?
   {       
      return Redirect::to('/login');//vete al login y autenticate
   }      
});


y esto aplica para todas las rutas agrupadas.

Me sorprende cada día más la facilidad de Laravel, parece que Taylor Otwell ha desarrollado este framework a la medida. Puedes leer más sobre rutas en Laravel. Aquí

¿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