2016-08-22 12 views
0

http://www.slimframework.com/docs/concepts/middleware.htmlによると、ルートミドルウェアは次のように追加されます。Slim v3ミドルウェアのパラメータへのアクセス

<?php 
$app = new \Slim\App(); 

$mw = function ($request, $response, $next) { 
    // How is $arg accessed? 
    $response->getBody()->write('BEFORE'); 
    $response = $next($request, $response); 
    $response->getBody()->write('AFTER'); 

    return $response; 
}; 

$app->get('/ticket/{id}', function ($request, $response, $args) { 
    $response->getBody()->write(' Hello '); 
    // $arg will be ['id'=>123] 
    return $response; 
})->add($mw); 

$app->run(); 

$argがパラメータ配列になります。どのようにミドルウェアでこれにアクセスできますか?

http://help.slimframework.com/discussions/questions/31-how-pass-route-pram-to-middlewareは、これを行う方法を示していますが、Slimの以前のリリース、エラーFatal error: Call to undefined method Slim\\Route::getParams()のようです。

答えて

2

ルートparamsがこれはthis Github issue

+1

に注目されるあなたは、これが動作するためにスリムなアプリケーションの設定を使用する必要がありますように

$app->get('/hello/{name}', \HelloWorld::class . ':execute') ->add(function ($request, $response, $next) { var_dump($request->getAttribute('routeInfo')[2]['name']);exit(); return $next($request, $response); }); 

として、リクエストに応じてrouteInfo属性を介してアクセスすることができます。 determineRouteBeforeAppMiddleware => true ... http://www.slimframework.com/docs/objects/application.html#slim-default-settings – geggleto

+0

おそらく、書かれたコードは実行可能なサンプルからコピーされたものです。その設定を真にすることで、予期せぬ問題は止めることができます。 –

+0

ありがとうGareth。私はこのコードをテストし、そのまま動作します。良い文書がないことを考えると、将来の改訂ではサポートされないかもしれないと少し心配しています。 – user1032531

関連する問題