名称

应用程序路由可以被赋予一个名称。如果你想要通过 RouteParser 的 urlFor() 方法以编程方式生成到特定路由的URL,这将非常有用。上述每个路由方法都返回一个 Slim\Route 对象,这个对象暴露了一个 setName() 方法。

$app->get('/hello/{name}', function ($request, $response, array $args) {
    $response->getBody()->write("Hello, " . $args['name']);
    return $response;
})->setName('hello');

你可以使用应用程序的 RouteParser 的 urlFor() 方法为这个命名路由生成 URL。

$routeParser = $app->getRouteCollector()->getRouteParser();
echo $routeParser->urlFor('hello', ['name' => 'Josh'], ['example' => 'name']);

// 输出 "/hello/Josh?example=name"

RouteParser 的 urlFor() 方法接受三个参数:

  • $routeName 路由名称。可以通过 $route->setName('name') 设置路由的名称。路由映射方法返回一个 Route 实例,所以你可以在映射路由之后直接设置名称。例如: $app->get('/', function () {...})->setName('name')
  • $data 关联数组,包含路由模式占位符和替换值。
  • $queryParams 关联数组,包含要附加到生成的 URL 的查询参数。