如何在中间件中获取路由模式:
routes.php文件:
$app->get('/myroute/{id}', function($req, $res, $args) {
//DO STUFF HERE
})->add(new MyMiddle());
middle.php:
class MyMiddle {
public function __invoke($req, $res, $next) {
//DO STUFF
}
}
在routes.php中我可以使用{id}
获取$args['id']
,但是如何在MyMiddle.php中获取它?
谢谢你,
克里斯蒂安莫利纳
答案 0 :(得分:4)
启用determineRouteBeforeAppMiddleware
设置:
$config = ['settings' => [
'determineRouteBeforeAppMiddleware' => true,
'displayErrorDetails' => true,
]];
$app = new \Slim\App($config);
您现在可以使用getAttribute()
从请求访问Route对象,并从路径获取参数:
$app->add(function ($request, $response, $next) {
$id = $request->getAttribute('route')->getArgument('id');
return $next($request, $response);
});
答案 1 :(得分:0)
我决定加入一个Slim v2示例,因为当我遇到这篇文章时,我正在寻找它。您可以使用$this->app->router()->getCurrentRoute()->getPattern()
回调挂钩中的slim.before.dispatch
来完成相同的操作。