中间件 Slim v3 中的路由模式
Route pattern in middleware Slim v3
如何在中间件中获取路由模式:
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中我可以用$args['id']
得到{id}
,但是我怎样才能在MyMiddle.php中得到它?
谢谢,
克里斯蒂安·莫利纳
启用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);
});
我决定包含一个 Slim v2 示例,因为当我遇到这个 post 时,我正在寻找它。您可以使用 slim.before.dispatch
回调挂钩中的 $this->app->router()->getCurrentRoute()->getPattern()
来完成同样的事情。
如何在中间件中获取路由模式:
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中我可以用$args['id']
得到{id}
,但是我怎样才能在MyMiddle.php中得到它?
谢谢,
克里斯蒂安·莫利纳
启用
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); });
我决定包含一个 Slim v2 示例,因为当我遇到这个 post 时,我正在寻找它。您可以使用 slim.before.dispatch
回调挂钩中的 $this->app->router()->getCurrentRoute()->getPattern()
来完成同样的事情。