Cuando un middleware before
devuelve un objeto de tipo Response
, Silex se salta los controladores de la aplicación, ya que no se ejecuta ni los otros middlewares ni la función anónima asociada a la ruta (sí que se ejecutan los middlewares de tipo after
). Se trata de una forma sencilla de que el middleware sea el que genere directamente la respuesta que se envía al usuario:
$app->before(function (Request $request) {
// si el recurso solicitado está protegido, redirigir al
// usuario a la página de login
if (...) {
return new RedirectResponse('/login');
}
});
Nota Si un middleware de tipo before
no devuelve un objeto Response
o el valor null
, Silex lanza una excepción de tipo RuntimeException
.