我想在中间件类中获取当前 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
吗?