2016-11-14 1 views
0

Slim 3 J'ai groupe avec les mêmes actions qui dépend $args:arguments de chemin de route dans le middleware

$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']); 
     ... 
    }); 
}); 

je pouvais transférer ces opérations communes au niveau supérieur. Comme je l'ai lu pourrait être middleware, mais dans middleware je ne peux pas (ou je ne sais pas comment) l'accès à $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; 
}); 

Répondre

2

Vous pouvez accéder aux itinéraires params avec le troisième élément de l'attribut info route:

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