0

我有一个关于控制器插件的问题:Redirect.php

我已经读过它,但仍然不明白

/**
     * Generate redirect response based on given route
     *
     * @param  string $route RouteInterface name
     * @param  array $params Parameters to use in url generation, if any
     * @param  array $options RouteInterface-specific options to use in url generation, if any
     * @param  bool $reuseMatchedParams Whether to reuse matched parameters
     * @return Response
     * @throws Exception\DomainException if composed controller does not implement InjectApplicationEventInterface, or
     *         router cannot be found in controller event
     */
    public function toRoute($route = null, $params = [], $options = [], $reuseMatchedParams = false)

我了解 $route 和 $params 但不了解 $options 的用途。

什么是特定于 RouteInterface 的选项?

那么有人可以为我解释一下吗?请给我一些例子。太感谢了

4

2 回答 2

2

可能还有其他用途,但我只使用 force_canonical 选项来显示完整的 url 地址:

$url_confirm = $this->url()->fromRoute('login',
                    [
                        'action' => 'confirm',
                        'id' => $user->token
                    ], [
                        'force_canonical' => true
                    ]);

然后可以通过电子邮件或短信将此链接发送给用户...

于 2020-05-10T09:55:05.693 回答
1

assemble()按路线类型列出的可能选项列表:

    • has_child:用于强制传递has_child到所有链式路由。
  1. 主机名
    • uri:您可以在此处作为对象传递,Laminas\Uri\Uri路由的主机名将作为主机名填充到该对象中
  2. 文字
    • 没有任何
  3. 方法
    • 没有任何
  4. 部分
    • has_child:强制组装部分路线,因为它会有子路线。
    • translator:用于传递翻译器实例以获取已翻译的路由
    • locale:应该翻译路线的语言环境(注意这也可以来自参数)。如果您想从一种语言版本链接到另一种语言版本,这可能会很有用。
    • TreeRouteStack 的所有其他选项
  5. 占位符:
    • 没有任何
  6. 正则表达式
    • 没有任何
  7. 方案
    • uri:您可以Laminas\Uri\Uri在此处作为对象传递,路线的方案将作为方案填充到该对象中
  8. 部分:
    • has_child: 看上面
    • translator: 看上面
    • text_domain: 用于翻译的文本域(例如 Gettext)
    • locale: 看上面
  9. 通配符
    • 没有任何
  10. 树路由栈
    • uri: 你可以在这里传递你自己的Laminas\Uri\Uri实例
    • force_canonical:返回带有方案、主机和端口的完整 URI
    • query: 追加查询字符串
    • fragment: 将片段添加到 URI
    • normalize_path: 标准化 URI 见Laminas\Uri\Uri::normalize()
    • only_return_path:只组装返回路径,而不在路径上进一步做一些工作(没有force_canonical或规范化等。

通常,路线的名称也作为选项传递给路线。当然,重定向/网址插件会为您执行此操作。

于 2020-05-26T11:41:56.200 回答