我想在中间件类中获取当前 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
in the Request
。但似乎我的自定义中间件类在设置属性之前被调用(由$this->dispatchRouterAndPrepareRoute($request, $router);
方法)。因为打电话$request->getAttribute('routeInfo')
决心NULL
.
所以我的问题是;如何从中间件函数/类获取当前路由(或路由名称)?
或者我应该复制上面的代码Slim\App
?
$request->getUri()->getPath()
获取当前路线,即使在middleware
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)