类 RedirectRoute
重定向路由将执行立即重定向。重定向路由在您希望在应用程序中进行路由层重定向时非常有用,例如当 URL 发生更改时。
重定向由一个异常发出信号,该异常会停止路由匹配并定义重定向 URL 和状态码。
常量
属性概述
-
$_compiledRoute protected
string|null
已编译的路由正则表达式
-
$_extensions protected
list<string>
此路由连接的扩展列表。
-
$_greedy protected
bool
此路由是否为贪婪路由?贪婪路由在其模板中包含
/*
-
$_name protected
string|null
路由的名称。使用 Route::getName(); 获取。
-
$defaults public
array
路由的默认参数
-
$keys public
array
路由中命名段的数组。
/{controller}/{action}/{id}
有 3 个键元素 -
$middleware protected
array
应应用的中件程序列表。
-
$options public
array<string, mixed>
路由的附加参数数组。
-
$redirect public
array
要重定向到的位置。
-
$template public
string
路由的模板字符串。
方法概述
-
__construct() public
构造函数
-
__set_state() public static
设置状态魔法方法以支持 var_export
-
_matchMethod() protected
检查 URL 的 HTTP 方法是否匹配。
-
_parseArgs() protected
将传递的参数解析为传递参数列表。
-
_parseExtension() protected
如果 $url 包含注册的扩展名,则从 $url 中删除扩展名。如果未找到注册的扩展名,则不返回扩展名,并返回未修改的 URL。
-
_persistParams() protected
将持久参数应用于 URL 数组。持久参数是在路由创建期间使用的特殊键,用于强制路由参数在从 URL 数组中省略时保持持久性。
-
_writeRoute() protected
构建路由正则表达式。
-
_writeUrl() protected
将匹配的路由数组转换为 URL 字符串。
-
compile() public
编译路由的正则表达式。
-
compiled() public
检查路由是否已编译为正则表达式。
-
getExtensions() public
获取此路由支持的扩展名。
-
getMiddleware() public
获取应应用于此路由的中件程序名称。
-
getName() public
获取路由的标准化 plugin.controller:action 名称。
-
hostMatches() public
检查主机是否与路由要求匹配
-
match() public
没有反向路由重定向路由。
-
normalizeAndValidateMethods() protected
将方法名称规范化为大写并验证它们是否为有效的 HTTP 方法。
-
parse() public
将字符串 URL 解析为数组。解析的 URL 将导致自动重定向。
-
parseRequest() public
检查给定 URL 是否可以被此路由解析。
-
setExtensions() public
设置此路由支持的扩展名。
-
setHost() public
设置主机要求
-
setMethods() public
设置此路由接受的 HTTP 方法。
-
setMiddleware() public
设置应应用于此路由的中件程序名称。
-
setPass() public
设置将转换为传递参数的参数名称
-
setPatterns() public
设置路由参数的正则表达式模式
-
setPersist() public
设置将自动持久化的参数名称
-
setStatus() public
设置 HTTP 状态
-
staticPath() public
获取此路由的静态路径部分。
方法详情
__construct() ¶ public
__construct(string $template, array $defaults = [], array<string, mixed> $options = [])
构造函数
选项
_ext
- 定义此路由使用的扩展名。_middleware
- 定义此路由的中件程序名称。pass
- 将列出的参数复制到 params['pass'] 中。_method
- 定义路由适用的 HTTP 方法。它可以是有效的 HTTP 方法名称的字符串或数组。_host
- 如果您希望此路由仅匹配特定主机名,请定义主机名模式。您可以使用.*
和 来创建通配符子域/主机,例如*.example.com
匹配example.com
上的所有子域。- '_port` - 如果您希望此路由仅匹配特定端口号,请定义端口号。
- '_urldecode' - 设置为
false
以在路由解析之前禁用 URL 解码。
参数
-
string
$template 包含参数占位符的模板字符串
-
array
$defaults optional 路由的默认值。重定向=>值的数组或 CakePHP 数组 URL。
-
array<string, mixed>
$options optional 路由的附加选项数组
__set_state() ¶ public static
__set_state(array<string, mixed> $fields): static
设置状态魔法方法以支持 var_export
此方法有助于希望实现路由缓存的应用程序。
参数
-
array<string, mixed>
$fields 对象属性的键值
返回值
static
_matchMethod() ¶ protected
_matchMethod(array $url): bool
检查 URL 的 HTTP 方法是否匹配。
参数
-
array
$url 正在生成的 URL 的数组。
返回值
bool
_parseArgs() ¶ protected
_parseArgs(string $args, array $context): list<string>
将传递的参数解析为传递参数列表。
如果给定的命名 $param 的 $val 与给定的 $rule 匹配(取决于 $context),则返回 true。当前实现的规则类型是 controller、action 和 match,它们可以彼此组合。
参数
-
string
$args 包含传递参数的字符串。例如 /1/foo
-
array
$context 当前路由上下文,应包含 controller/action 键。
返回值
list<string>
_parseExtension() ¶ protected
_parseExtension(string $url): array
如果 $url 包含注册的扩展名,则从 $url 中删除扩展名。如果未找到注册的扩展名,则不返回扩展名,并返回未修改的 URL。
参数
-
string
$url 要解析的 url。
返回值
array
_persistParams() ¶ protected
_persistParams(array $url, array $params): array
将持久参数应用于 URL 数组。持久参数是在路由创建期间使用的特殊键,用于强制路由参数在从 URL 数组中省略时保持持久性。
参数
-
array
$url 要应用持久参数的数组。
-
array
$params 要替换持久参数的持久值数组。
返回值
array
_writeRoute() ¶ protected
_writeRoute(): void
构建路由正则表达式。
使用 template、defaults 和 options 属性来编译一个正则表达式,该正则表达式可用于解析请求字符串。
返回值
void
_writeUrl() ¶ protected
_writeUrl(array $params, array $pass = [], array $query = []): string
将匹配的路由数组转换为 URL 字符串。
使用用于创建路由的模板来组合字符串 URL。
参数
-
array
$params 转换为字符串 URL 的参数
-
array
$pass 可选 传递的附加参数
-
array
$query 可选 参数数组
返回值
string
compile() ¶ public
compile(): string
编译路由的正则表达式。
修改 defaults 属性,以便设置所有必要的键,并使用命名路由元素填充 $this->names。
返回值
string
match() ¶ public
match(array $url, array $context = []): string|null
没有反向路由重定向路由。
如果 URL 与路由参数和设置匹配,则返回生成的字符串 URL。如果 URL 与路由参数不匹配,则返回 false。此方法处理反向路由或将 URL 数组转换为字符串 URL。
参数
-
array
$url 要转换为字符串的参数数组。
-
array
$context 可选 请求上下文参数数组。
返回值
string|null
normalizeAndValidateMethods() ¶ protected
normalizeAndValidateMethods(list<string>|string $methods): list<string>|string
将方法名称规范化为大写并验证它们是否为有效的 HTTP 方法。
参数
-
list<string>|string
$methods 方法。
返回值
list<string>|string
抛出
InvalidArgumentException
当方法不在 `VALID_METHODS` 列表中时。
parse() ¶ public
parse(string $url, string $method = ''): array|null
将字符串 URL 解析为数组。解析的 URL 将导致自动重定向。
如果路由可以解析,则返回参数数组;否则返回 null
。如果字符串 URL 与路由的正则表达式匹配,则对其进行解析。
参数
-
string
$url 要解析的 URL。
-
string
$method 可选 使用的 HTTP 方法。
返回值
array|null
抛出
Cake\Http\Exception\RedirectException
在成功匹配时抛出异常。这用于停止路由匹配并向中间件发出信号,表明应该执行重定向。
parseRequest() ¶ public
parseRequest(Psr\Http\Message\ServerRequestInterface $request): array|null
检查给定 URL 是否可以被此路由解析。
如果路由可以解析,则返回参数数组;否则返回 null
。
参数
-
Psr\Http\Message\ServerRequestInterface
$request 要尝试解析的 URL。
返回值
array|null
setExtensions() ¶ public
setExtensions(list<string> $extensions): $this
设置此路由支持的扩展名。
参数
-
list<string>
$extensions 要设置的扩展名。
返回值
$this
setMethods() ¶ public
setMethods(list<string> $methods): $this
设置此路由接受的 HTTP 方法。
参数
-
list<string>
$methods 要接受的 HTTP 方法。
返回值
$this
抛出
InvalidArgumentException
当方法不在 `VALID_METHODS` 列表中时。
setMiddleware() ¶ public
setMiddleware(array $middleware): $this
设置应应用于此路由的中件程序名称。
参数
-
array
$middleware 要应用于此路由的中间件名称列表。在路由匹配之前不会检查中间件名称。
返回值
$this
setPass() ¶ public
setPass(list<string> $names): $this
设置将转换为传递参数的参数名称
参数
-
list<string>
$names 要传递的参数名称。
返回值
$this
setPatterns() ¶ public
setPatterns(array<string, string> $patterns): $this
设置路由参数的正则表达式模式
如果您的任何模式包含多字节值,则将启用 multibytePattern
模式。
参数
-
array<string, string>
$patterns 要应用于路由元素的模式
返回值
$this
setPersist() ¶ public
setPersist(array $names): $this
设置将自动持久化的参数名称
持久参数允许您定义在生成新 URL 时应自动包含哪些路由参数。您可以通过在 URL 中重新定义持久参数来覆盖它们,或通过将持久参数设置为 false
来删除它们。
// remove a persistent 'date' parameter
Router::url(['date' => false', ...]);
参数
-
array
$names 要传递的参数名称。
返回值
$this