路由器类
将请求 URL 解析为控制器、操作和参数。使用已连接的路由将传入的 URL 字符串匹配到参数,这些参数将允许请求被调度。还处理使用已连接的路由将参数列表转换为 URL 字符串。路由允许您将世界与您的应用程序交互的方式(URL)与实现(控制器和操作)分离。
常量
-
字符串
ACTION ¶'index|show|add|create|edit|update|remove|del|delete|view|item'
操作名称的正则表达式
-
字符串
DAY ¶'0[1-9]|[12][0-9]|3[01]'
日期的正则表达式
-
字符串
ID ¶'[0-9]+'
自动递增 ID 的正则表达式
-
字符串
MONTH ¶'0[1-9]|1[012]'
月份的正则表达式
-
字符串
UUID ¶'[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}'
UUID 的正则表达式
-
字符串
YEAR ¶'[12][0-9]{3}'
年份的正则表达式
属性摘要
-
$_collection protected static
Cake\Routing\RouteCollection
要将路由添加到其中的路由集合。
-
$_defaultExtensions protected static
list<string>
使用 Router::extensions() 定义的默认扩展
-
$_defaultRouteClass protected static
字符串
默认路由类。
-
$_fullBaseUrl protected static
string|null
包含将应用于所有生成的 URL 的基本字符串。例如
https://example.com
-
$_initialState protected static
array
首次调用 reload() 时填充初始状态,该状态位于此文件底部。这是一种欺骗行为,因为 get_class_vars() 返回静态变量的值,即使它们已更改。
-
$_namedExpressions protected static
array<string, string>
命名表达式
-
$_request protected static
Cake\Http\ServerRequest|null
维护对请求对象的引用。
-
$_requestContext protected static
array<string, mixed>
请求上下文数据的哈希。
-
$_routePaths protected static
array<string, mixed>
已解析的路由路径的缓存
-
$_urlFilters protected static
arrayClosure>
URL 过滤器堆栈,应用于路由 URL,然后将参数传递给路由集合。
方法摘要
-
_applyUrlFilters() protected static
将所有已连接的 URL 过滤器应用于 URL。
-
addUrlFilter() public static
向路由器添加 URL 过滤器。
-
createRouteBuilder() public static
为提供的路径创建 RouteBuilder。
-
defaultRouteClass() public static
获取或设置默认路由类。
-
extensions() public static
获取或设置以后连接的所有路由的有效扩展。
-
fullBaseUrl() public static
设置将用作生成此应用程序完全限定 URL 的前缀的完整基本 URL。如果未传递参数,则返回当前配置的值。
-
getNamedExpressions() public static
获取用于 config/routes.php 的命名路由模式
-
getRequest() public static
获取当前请求对象。
-
getRouteCollection() public static
获取路由器内的 RouteCollection
-
normalize() public static
规范化 URL 用于比较目的。
-
parseRequest() public static
如果可能,获取请求的路由参数。
-
parseRoutePath() public static
解析字符串路由路径
-
pathUrl() public static
为路由路径生成 URL。
-
reload() public static
重新加载默认路由器设置。重置所有类变量并删除所有已连接的路由。
-
resetRoutes() public static
重置路由和相关状态。
-
reverse() public static
将已解析的参数数组反转为字符串。
-
reverseToArray() public static
将已解析的参数数组反转为数组。
-
routeExists() public static
查找指定操作的 URL。
-
routes() public static
获取路由范围及其连接的路由。
-
setRequest() public static
设置当前请求实例。
-
setRouteCollection() public static
设置路由器内的 RouteCollection
-
unwrapShortString() protected static
从
_path
键注入路由默认值 -
url() public static
查找指定操作的 URL。
方法详情
_applyUrlFilters() ¶ protected static
_applyUrlFilters(array $url): array
将所有已连接的 URL 过滤器应用于 URL。
参数
-
array
$url 正在修改的 URL 数组。
返回
array
另请参阅
\Cake\Routing\Router::addUrlFilter()
addUrlFilter() ¶ public static
addUrlFilter(Closure $function): void
向路由器添加 URL 过滤器。
URL 过滤器函数应用于传递给 Router::url() 的每个数组 $url,然后将 URL 发送到路由集合。
回调函数应期望以下参数
$params
正在处理的 URL 参数。$request
当前请求。
URL 过滤器函数应始终返回参数,即使未修改。
用法
URL 过滤器允许您轻松地实现持久参数等功能。
Router::addUrlFilter(function ($params, $request) {
if ($request->getParam('lang') && !isset($params['lang'])) {
$params['lang'] = $request->getParam('lang');
}
return $params;
});
参数
-
Closure
$function 要添加的函数
返回
void
createRouteBuilder() ¶ public static
createRouteBuilder(string $path, array<string, mixed> $options = []): Cake\Routing\RouteBuilder
为提供的路径创建 RouteBuilder。
参数
-
string
$path 要将生成器设置为的路径。
-
array<string, mixed>
$options optional 生成器的选项
返回
Cake\Routing\RouteBuilder
defaultRouteClass() ¶ public static
defaultRouteClass(string|null $routeClass = null): string|null
获取或设置默认路由类。
参数
-
string|null
$routeClass optional 类名。
返回
string|null
extensions() ¶ public static
extensions(list<string>|string|null $extensions = null, bool $merge = true): list<string>
获取或设置以后连接的所有路由的有效扩展。
指示路由器从 URL 中解析出文件扩展名。例如,http://example.com/posts.rss 会得到 "rss" 的文件扩展名。文件扩展名本身在控制器中以 $this->request->getParam('_ext')
的形式提供,并由内容类型协商使用来自动切换到备用布局和模板,并加载与给定内容相对应的助手,例如 RssHelper。切换布局和助手需要选定的扩展名在 Cake\Http\Response
中具有定义的 MIME 类型。
可以将字符串或有效扩展名的数组传递给此方法。如果不带任何参数调用,它将返回当前设置的扩展名列表。
参数
-
list<string>|string|null
$extensions 可选 要添加的扩展名列表。
-
bool
$merge 可选 是否与现有扩展名合并或覆盖。默认值为
true
。
返回
list<string>
fullBaseUrl() ¶ public static
fullBaseUrl(string|null $base = null): string
设置将用作生成此应用程序完全限定 URL 的前缀的完整基本 URL。如果未传递参数,则返回当前配置的值。
注意
如果您在运行时更改配置值 App.fullBaseUrl
并期望路由器使用新设置生成链接,则需要再次调用此方法并传递该值。
参数
-
string|null
$base 可选 包含域的生成 URL 的前缀。例如:
http://example.com
返回
字符串
getNamedExpressions() ¶ public static
getNamedExpressions(): array<string, string>
获取用于 config/routes.php 的命名路由模式
返回
array<string, string>
另请参阅
getRequest() ¶ public static
getRequest(): Cake\Http\ServerRequest|null
获取当前请求对象。
返回
Cake\Http\ServerRequest|null
getRouteCollection() ¶ public static
getRouteCollection(): Cake\Routing\RouteCollection
获取路由器内的 RouteCollection
返回
Cake\Routing\RouteCollection
normalize() ¶ public static
normalize(array|string $url = '/'): string
规范化 URL 用于比较目的。
将剥离基本路径并替换任何双斜杠。它不会统一输入值的 casing 和下划线。
参数
-
array|string
$url 可选 要标准化的 URL。数组或字符串 URL。
返回
字符串
parseRequest() ¶ public static
parseRequest(Cake\Http\ServerRequest $request): array
如果可能,获取请求的路由参数。
参数
-
Cake\Http\ServerRequest
$request 要解析请求数据的请求。
返回
array
抛出
Cake\Routing\Exception\MissingRouteException
当无法处理路由时
parseRoutePath() ¶ public static
parseRoutePath(string $url): array<string|int, string>
解析字符串路由路径
字符串示例
- Bookmarks::view
- Admin/Bookmarks::view
- Cms.Articles::edit
- Vendor/Cms.Management/Admin/Articles::view
参数
-
string
$url 以 [Plugin.][Prefix/]Controller::action 格式的路由路径
返回
array<string|int, string>
pathUrl() ¶ public static
pathUrl(string $path, array $params = [], bool $full = false): string
为路由路径生成 URL。
路由路径示例
- Bookmarks::view
- Admin/Bookmarks::view
- Cms.Articles::edit
- Vendor/Cms.Management/Admin/Articles::view
参数
-
string
$path 指定控制器和操作的路由路径,可以选择包含插件和前缀。
-
array
$params 可选 指定任何其他参数的数组。也可以是
Router::url()
支持的任何特殊参数。-
bool
$full 可选 如果为 true,则完整的基本 URL 将被附加到结果。默认值为 false。
返回
字符串
resetRoutes() ¶ public static
resetRoutes(): void
重置路由和相关状态。
类似于 reload(),但它不会重置所有全局状态,因为这会导致某些插件测试用例场景中的行为不正确。
此方法将重置
- 路由
- URL 过滤器
- 已初始化的属性
扩展名和默认路由类不会被修改
返回
void
reverse() ¶ public static
reverse(Cake\Http\ServerRequest|array $params, bool $full = false): string
将已解析的参数数组反转为字符串。
与 Router::url() 的工作方式类似,但由于解析后的 URL 包含“pass”、“_matchedRoute”等额外的键,因此需要对这些键进行特殊处理才能将参数数组反转为字符串 URL。
参数
-
Cake\Http\ServerRequest|array
$params 需要反转的参数数组或 {@link \Cake\Http\ServerRequest} 对象。
-
bool
$full 可选 设置为 true 以在反转 URL 时包含完整的 URL,包括协议。
返回
字符串
reverseToArray() ¶ public static
reverseToArray(Cake\Http\ServerRequest|array $params): array
将已解析的参数数组反转为数组。
与 Router::url() 的工作方式类似,但由于解析后的 URL 包含“pass”、“_matchedRoute”等额外的键,因此需要对这些键进行特殊处理才能将参数数组反转为字符串 URL。
参数
-
Cake\Http\ServerRequest|array
$params 需要反转的参数数组或 {@link \Cake\Http\ServerRequest} 对象。
返回
array
routeExists() ¶ public static
routeExists(array|string|null $url = null, bool $full = false): bool
查找指定操作的 URL。
如果 URL 存在,则返回布尔值
用法
参数
-
array|string|null
$url 可选 指定以下任何内容的数组:'controller'、'action'、'plugin' 此外,您可以提供路由元素或查询字符串参数。如果为字符串,它可以是任何有效的 URL 字符串。
-
bool
$full 可选 如果为 true,则完整的基本 URL 将被附加到结果。默认值为 false。
返回
bool
另请参阅
routes() ¶ public static
routes(): arrayCake\Routing\Route\Route>
获取路由范围及其连接的路由。
返回
arrayCake\Routing\Route\Route>
setRequest() ¶ public static
setRequest(Cake\Http\ServerRequest $request): void
设置当前请求实例。
参数
-
Cake\Http\ServerRequest
$request 请求对象。
返回
void
setRouteCollection() ¶ public static
setRouteCollection(Cake\Routing\RouteCollection $routeCollection): void
设置路由器内的 RouteCollection
参数
-
Cake\Routing\RouteCollection
$routeCollection 路由集合
返回
void
unwrapShortString() ¶ protected static
unwrapShortString(array $url): array
从 _path
键注入路由默认值
参数
-
array
$url 带有
_path
键的路由数组
返回
array
url() ¶ public static
url(Psr\Http\Message\UriInterface|array|string|null $url = null, bool $full = false): string
查找指定操作的 URL。
返回指向控制器和操作组合的 URL。
用法
Router::url('/posts/edit/1');
返回带有基本目录前缀的字符串。此用法不使用反转路由。Router::url(['controller' => 'Posts', 'action' => 'edit']);
返回通过反转路由生成的 URL。Router::url(['_name' => 'custom-name', ...]);
返回通过反转路由生成的 URL。此形式允许您利用命名路由。
有一些“特殊”参数可以更改最终生成的 URL 字符串
_base
- 设置为 false 以从生成的 URL 中删除基本路径。如果您的应用程序不在根目录中,则可以使用它来生成“Cake 相对”的 URL。Cake 相对 URL 在使用 requestAction 时是必需的。_scheme
- 设置为在不同的方案(如webcal
或ftp
)上创建链接。默认为当前方案。_host
- 设置用于链接的主机。默认为当前主机。_port
- 如果需要在非标准端口上创建链接,请设置端口。_full
- 如果为 true,则Router::fullBaseUrl()
的输出将被附加到生成的 URL。#
- 允许您设置 URL 哈希片段。_https
- 设置为 true 以将生成的 URL 转换为 https,或设置为 false 以强制使用 http。_name
- 路由名称。如果您已设置命名路由,则可以使用此键指定它。
参数
-
Psr\Http\Message\UriInterface|array|string|null
$url 可选 指定以下任何内容的数组:'controller'、'action'、'plugin' 此外,您可以提供路由元素或查询字符串参数。如果为字符串,它可以是任何有效的 URL 字符串,也可以是 UriInterface 实例。
-
bool
$full 可选 如果为 true,则完整的基本 URL 将被附加到结果。默认值为 false。
返回
字符串
抛出
Cake\Core\Exception\CakeException
当找不到路由名称时
属性详细信息
$_initialState ¶ protected static
首次调用 reload() 时填充初始状态,该状态位于此文件底部。这是一种欺骗行为,因为 get_class_vars() 返回静态变量的值,即使它们已更改。
类型
array