在中间件中获取路径路径参数

时间:2016-11-14 13:14:51

标签: php slim slim-3

在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;
});

2 个答案:

答案 0 :(得分:4)

您可以使用路径信息属性的第三项访问路径参数:

$routeParams = $request->getAttribute('routeInfo')[2];

答案 1 :(得分:1)

另一种方式:

$route = $req->getAttribute('route');
if (! is_null($route)) {
    print_r($route->getArguments()); // ['id' => 123]
    print_r($route->getArgument('id')); // 123
}