Estos middlewares solo se ejecutan para las peticiones de tipo master. Esto significa que no se tienen en cuenta en las subpeticiones que se crean para realizar los forwards.
3.1.1. El middleware before
El middleware de aplicación before
te permite modificar el objeto Request
antes de que se ejecute el controlador:
$app->before(function (Request $request, Application $app) {
// ...
});
Por defecto este middleware se ejecuta después del enrutamiento y de la capa de seguridad.
Si quieres ejecutar este middleware incluso para las excepciones (por ejemplo cuando se produce un error de tipo 404
o 403
) tienes que añadir lo siguiente al registrarlo:
$app->before(function (Request $request, Application $app) {
// ...
}, Application::EARLY_EVENT);
Como en este caso no se ejecuta ni el enrutamiento ni la capa de seguridad, no tienes acceso ni al idioma del usuario, ni a la ruta actual ni al objeto de seguridad que representa al usuario.
Nota El middleware before
utiliza internamente el evento request
de Symfony.
3.1.2. El middleware after
El middleware de aplicación after
te permite modificar el objeto Response
antes de que se genere la respuesta enviada al usuario:
$app->after(function (Request $request, Response $response) {
// ...
});
Nota El middleware after
utiliza internamente el evento response
de Symfony.
3.1.3. El middleware finish
El middleware de aplicación finish
te permite ejecutar código después de haber enviado el objeto Response
al usuario, por lo que es ideal para tareas como enviar emails o guardar mensajes de log:
$app->finish(function (Request $request, Response $response) {
// ...
// ten en cuenta que cualquier cambio que hagas en Request
// o Response se ignorará, porque la respuesta ya se ha
// enviado al usuario
});
Nota El middleware finish
utiliza internamente el evento terminate
de Symfony.