Usuario:ManuelRomero/Laravel/filtros

De WikiEducator
Saltar a: navegación, buscar


Conceto

  • Un filtro es una accion o verificación que queremos realizar o antes o después de ralizar una llamada a una ruta
  • En php los filtros se definen en el fichero filter.php' ubicado en nuestro directorio app
  • Existen creados dos filtros por parte de laravel
before
  • Este filtro se ejecutará siempre antes de de cualquier otro filtro y por supuesto antes de cargar la página
after
  • Este filtro se ejecutará después de haber cargado la página y después de cualquier otro filtro before que hayamos creado.
  • Se conocen como filtros globales, y los podemos ver en el fichero anteriormente comentado
App::before(function($request)
{/*
Este código que se ejecuta siempre antes de cualquier ruta y  cualquier filtro before
-----------
$request es una variable con información de la solicitud del usuario  que ha echo que se lance este filtro
*/
});
 
 
App::after(function($request, $response)
{
/*
Este código que se ejecuta siempre antes de cualquier ruta y  cualquier filtro before
-----------
$request es la misma variable que la de before
$response contiene información de la respuesta enviada al usuario
*/
	//
});


Icon activity.jpg

Actividad

Vamos a hacer un filtro after y otro before Se ejecutarán antes y después de una llamada a una página Before generará un número aleatorio del 1 al 3. Si el valor es 2 mostrará un mensaje, si no no hará nada After simplemente mostrará un mensaje

 




Definiendo el filtro

  • En el fichero filter.php
Route::filter('filtro_antes',function(){
    $numero = rand(1, 3 );
    echo 'Imprimiendo en el filtro antes '.$numero.' <br />';
    if ( $numero == 2){
        return 'Filtro retorna un texto, por lo tanto cambio el flujo';
    }
});
 
Route::filter('filtro_despues',function(){
    echo 'Imprimiendo en el filtro despues<br />';
});
  • En el fichero routes.php

Usanto el filtro

Route::get('/', array('before'=>'filtro_antes',
                      'after'=>'filtro_despues',
                       function(){
                               echo'Página principal<br/>';}
                       )
                       );