Slim 3 - 如何在路由上添加多个中间件 类?

Slim 3 - How to add multiple middleware classes on a route?

我知道如何在 $app 中添加多个中间件 class:

$app->add( new Middlewares\VerifyCsrfToken() );
$app->add( new Middlewares\RemoveTrailingSlash() );

但是路线如何?

$app->get('/', function($request, $response){
     return $response;
})->add( new Middlewares\VerifyCsrfToken() )
  ->add( new Middlewares\RemoveTrailingSlash() );

如评论中所述,add() returns Route 对象的实例,因此您可以简单地将多个 add() 链接在一起。

unit test 展示了如何操作:

$app = new App();

$app->get('/', function ($req, $res) {
    return $res->write('Center');
})->add(function ($req, $res, $next) {
    $res->write('In1');
    $res = $next($req, $res);
    $res->write('Out1');
    return $res;
})->add(function ($req, $res, $next) {
    $res->write('In2');
    $res = $next($req, $res);
    $res->write('Out2');
    return $res;
});