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í

Enviar comentario

via Cristalab http://ift.tt/1iLxhZF

Advertisements

Tags:

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: