ミドルウェア クラスで現在の I ルートの名前を取得したい。以前 (Slim 2.*) では、次のように現在のルートを取得できました。
$route = $this->app->router->getCurrentRoute();
ただし、この機能は Slim の 3.0 バージョンでは削除されています。__invoke
のメソッドでSlim\App
次のコードを見つけました。
// Get the route info
$routeInfo = $request->getAttribute('routeInfo');
/** @var \Slim\Interfaces\RouterInterface $router */
$router = $this->container->get('router');
// If router hasn't been dispatched or the URI changed then dispatch
if (null === $routeInfo || ($routeInfo['request'] !== [$request->getMethod(), (string) $request->getUri()])) {
$request = $this->dispatchRouterAndPrepareRoute($request, $router);
$routeInfo = $request->getAttribute('routeInfo');
}
これは、現在のルートが属性として に格納されていることを示しrouteInfo
ますRequest
。$this->dispatchRouterAndPrepareRoute($request, $router);
しかし、属性が(メソッドによって)設定される前に、私のカスタムミドルウェアクラスが呼び出されているようです。呼び出し$request->getAttribute('routeInfo')
は に解決されるためNULL
です。
私の質問は次のとおりです。ミドルウェア関数/クラスから現在のルート (またはルートの名前) を取得するにはどうすればよいですか?
または、上記のコードを からコピーする必要がありますSlim\App
か?