在中间件中获取路由路径参数
Getting route path arguments in middleware
在 Slim 3 中,我有一组具有相同操作的组,这取决于 $args
:
$this->group('{id}/', function () {
$this->get('first/', function (Request $req, Response $res, $args) {
$myData = operations($args['id']);
...
});
$this->post('second/', function (Request $req, Response $res, $args) {
$myData = operations($args['id']);
...
});
});
我可以将那些常用操作转移到更高级别。
正如我所读,它可能是中间件,但在中间件中我无法(或不知道如何)访问 $args
.
->add(function (ServerRequestInterface $request, ResponseInterface $response, callable $next) {
//how to get arguments?
$request = $request->withAttribute('myData', operations($id);
$response = $next($request, $response);
return $response;
});
您可以使用路由信息属性的第三项访问路由参数:
$routeParams = $request->getAttribute('routeInfo')[2];
另一种方式:
$route = $req->getAttribute('route');
if (! is_null($route)) {
print_r($route->getArguments()); // ['id' => 123]
print_r($route->getArgument('id')); // 123
}
在 Slim 3 中,我有一组具有相同操作的组,这取决于 $args
:
$this->group('{id}/', function () {
$this->get('first/', function (Request $req, Response $res, $args) {
$myData = operations($args['id']);
...
});
$this->post('second/', function (Request $req, Response $res, $args) {
$myData = operations($args['id']);
...
});
});
我可以将那些常用操作转移到更高级别。
正如我所读,它可能是中间件,但在中间件中我无法(或不知道如何)访问 $args
.
->add(function (ServerRequestInterface $request, ResponseInterface $response, callable $next) {
//how to get arguments?
$request = $request->withAttribute('myData', operations($id);
$response = $next($request, $response);
return $response;
});
您可以使用路由信息属性的第三项访问路由参数:
$routeParams = $request->getAttribute('routeInfo')[2];
另一种方式:
$route = $req->getAttribute('route');
if (! is_null($route)) {
print_r($route->getArguments()); // ['id' => 123]
print_r($route->getArgument('id')); // 123
}