检索当前路由

如果你需要在应用程序中获取当前的路由,你所需要做但就是,调用 HTTP 请求类的带有 'route' 参数的 getAttribute 方法,它将返回当前的路由,这个路由是 Slim\Route 类的实例。class.

可以使用 getName() 获取路由的名称,或者使用 getMethods()获取此路由支持的方法, etc。

Note: 如果你需要在 app 中间件中访问路由,必须在配置中将 'determineRouteBeforeAppMiddleware' 设置为 true。否则,getAttribute('route') 将会返回 null。该路由在路由中间件中永远可用。

Example:

  1. use Slim\Http\Request;
  2. use Slim\Http\Response;
  3. use Slim\App;
  4. $app = new App([
  5. 'settings' => [
  6. // Only set this if you need access to route within middleware
  7. 'determineRouteBeforeAppMiddleware' => true
  8. ]
  9. ])
  10. // routes...
  11. $app->add(function (Request $request, Response $response, callable $next) {
  12. $route = $request->getAttribute('route');
  13. $name = $route->getName();
  14. $groups = $route->getGroups();
  15. $methods = $route->getMethods();
  16. $arguments = $route->getArguments();
  17. // do something with that information
  18. return $next($request, $response);
  19. });