Class yii\helpers\BaseUrl

继承yii\helpers\BaseUrl
子类yii\helpers\Url
可用自版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/helpers/BaseUrl.php

BaseUrl 为 yii\helpers\Url 提供了具体的实现方法.

不要使用 BaseUrl. 改用 yii\helpers\Url.

公共属性

隐藏继承的属性

属性类型描述定义在
$urlManager yii\web\UrlManager 用于创建 URL 的 URL 管理器. yii\helpers\BaseUrl

公共方法

隐藏继承的方法

方法描述定义在
base() 返回当前请求的基本 URL. yii\helpers\BaseUrl
canonical() 返回当前请求的页面的规范化 URL. yii\helpers\BaseUrl
current() 使用当前路由和 GET 参数创建 URL. yii\helpers\BaseUrl
ensureScheme() 通过确保使用指定的方案来规范化 URL. yii\helpers\BaseUrl
home() 返回主页 URL. yii\helpers\BaseUrl
isRelative() 判断 URL 是否是相对的. yii\helpers\BaseUrl
previous() 返回先前 记住 的 URL. yii\helpers\BaseUrl
remember() 记住指定的 URL, 以便稍后可以通过 previous() 取回. yii\helpers\BaseUrl
to() 根据给定的参数创建 URL. yii\helpers\BaseUrl
toRoute() 创建给定路由的 URL. yii\helpers\BaseUrl

受保护的方法

隐藏继承的方法

方法描述定义在
getUrlManager() 返回用于创建 URL 的 URL 管理器. yii\helpers\BaseUrl
normalizeRoute() 规范化路由并使其适用于 UrlManager. 绝对路由保持原样, 相对路由转换为绝对路由. yii\helpers\BaseUrl

属性详情

$urlManager public static 属性 (可用自版本: 2.0.8)

用于创建 URL 的 URL 管理器.

public static yii\web\UrlManager $urlManager null

方法详情

base() public static 方法

返回当前请求的基本 URL.

public static string base ( $scheme false )
$scheme boolean|string

在返回的基本 URL 中使用的 URI 方案:

  • false (default): 返回没有主机信息的基本 URL.
  • true: 返回与 yii\web\UrlManager::$hostInfo 中的方案相同的绝对基本 URL.
  • string: 返回具有指定方案的绝对基本 URL(http, https, 或用于协议相关的 URL 的空字符串).
canonical() public static 方法

返回当前请求的页面的规范化 URL.

使用当前控制器的 yii\web\Controller::$routeyii\web\Controller::$actionParams 构造规范化的 URL.

你可以在布局视图中使用以下代码添加有关规范化 URL 的链接标记:

$this->registerLinkTag(['rel' => 'canonical', 'href' => Url::canonical()]);
public static string canonical ( )
return string

当前请求的页面的规范化 URL.

current() public static 方法 (可用自版本: 2.0.3)

使用当前路由和 GET 参数创建 URL.

你可以修改或删除一些 GET 参数, 或通过$params参数添加其它查询参数.

特别是, 如果将参数指定为null, 则将从现有的 GET 参数中删除此参数; 在$params中指定的所有其它参数将与现有的 GET 参数合并. 例如:

// 假设 $_GET = ['id' => 123, 'src' => 'google'], 当前路由是"post/view"

// /index.php?r=post%2Fview&id=123&src=google
echo Url::current();

// /index.php?r=post%2Fview&id=123
echo Url::current(['src' => null]);

// /index.php?r=post%2Fview&id=100&src=google
echo Url::current(['id' => 100]);

Note: 如果要在末尾用[]替换数组参数, 则应将$params指定为嵌套数组. 对于参数为PostSearchForm[id]PostSearchForm[src]PostSearchForm模型, 语法如下:

// index.php?r=post%2Findex&PostSearchForm%5Bid%5D=100&PostSearchForm%5Bsrc%5D=google
echo Url::current([
    $postSearch->formName() => ['id' => 100, 'src' => 'google'],
]);
public static string current ( array $params = [], $scheme false )
$params array

将与当前 GET 参数合并的关联参数数组. 如果参数值为空, 则将删除相应的 GET 参数.

$scheme boolean|string

在生成的 URL 中使用 URI 方案:

  • false (default): 返回相对 URL.
  • true: 返回与 yii\web\UrlManager::$hostInfo 中的方案相同的绝对基本 URL.
  • string: 使用指定的方案(http, https或用于协议相关 URL 空字符串)生成绝对 URL.
return string

生成的 URL.

ensureScheme() public static 方法 (可用自版本: 2.0.11)

通过确保使用指定的方案来规范化 URL.

如果 URL 是相对的, 或者 scheme 不是字符串, 则会跳过规范化.

public static string ensureScheme ( $url, $scheme )
$url string

要处理的 URL.

$scheme string

URL 中使用的 URI 方案(eg. http or https). 使用空字符串来创建协议相关的 URL(eg. //example.com/path).

return string

处理后的 URL.

getUrlManager() protected static 方法 (可用自版本: 2.0.8)

返回用于创建 URL 的 URL 管理器.

protected static yii\web\UrlManager getUrlManager ( )
return yii\web\UrlManager

用于创建 URL 的 URL 管理器.

home() public static 方法

返回主页 URL.

public static string home ( $scheme false )
$scheme boolean|string

用于返回的 URL 的 URI 方案:

  • false (default): 返回相对 URL.
  • true: 返回与 yii\web\UrlManager::$hostInfo 中的方案相同的绝对基本 URL.
  • string: 使用指定的方案(http, https或用于协议相关 URL 空字符串)生成绝对 URL.
return string

Home URL

isRelative() public static 方法

判断 URL 是否是相对的.

相对 URL 没有主机信息部分.

public static boolean isRelative ( $url )
$url string

要检查的 URL.

return boolean

URL 是否是相对的.

normalizeRoute() protected static 方法

规范化路由并使其适用于 UrlManager. 绝对路由保持原样, 相对路由转换为绝对路由.

相对路由是没有前导斜杠的路由, 例如: view, post/view.

  • 如果路由是空字符串, 则将使用当前 路由;
  • 如果路由根本不包含任何斜杠(eg. index), 则认为它是当前控制器的一个动作 ID, 并将以 yii\web\Controller::$uniqueId 为前缀;
  • 如果路由没有前导斜杠(eg. site/index), 则认为它是相对于当前模块(module)的路由, 并将以 uniqueId 为前缀.

从版本 2.0.2 开始, 还可以将路由指定为别名(alias). 在这种情况下, 在进行上述转换步骤之前, 别名将首先转换为实际路由.

protected static string normalizeRoute ( $route )
$route string

路由. 这可以是绝对路由或相对路由.

return string

适用于 UrlManager 的规范化路由.

throws yii\base\InvalidArgumentException

在没有活动控制器时给出相对路由.

previous() public static 方法

返回先前 记住 的 URL.

参见:

public static string|null previous ( $name null )
$name string

与之前记住的 URL 关联的名称. 如果未设置, yii\web\User::getReturnUrl() 将用于获取记住的 URL.

return string|null

先前记住的 URL. 如果没有记住使用给定名称的 URL 并且未指定$name, 则返回null.

remember() public static 方法

记住指定的 URL, 以便稍后可以通过 previous() 取回.

参见:

public static void remember ( $url '', $name null )
$url string|array

要记住的 URL. 有关可接受的格式, 请参阅 to(). 如果未指定此参数, 则将使用当前请求的 URL.

$name string

与要记住的 URL 关联的名称. 稍后可以通过 previous() 使用它. 如果未设置, yii\web\User::setReturnUrl() 将与传递的 URL 一起使用.

to() public static 方法

根据给定的参数创建 URL.

该方法与 toRoute() 非常相似. 唯一的区别就是该方法要求仅指定为数组的路由. 如果给出了字符串, 它将被视为 URL.

特别是, 如果$url是:

  • 数组: 将调用 toRoute() 来生成 URL. 例如:['site/index'], ['post/index', 'page' => 2]. 有关如何指定路由的更多详细信息, 请参阅 toRoute();
  • 带有前导@的字符串: 它被视为别名, 并将返回相应的别名字符串;
  • 空字符串: 将返回当前请求的 URL;
  • 字符串: 它将按原样返回.

当指定$scheme(字符串或true)时, 将返回带有主机信息(从 yii\web\UrlManager::$hostInfo 获取)的绝对 URL. 如果$url已经是绝对 URL, 则其方案将被替换为指定的方案.

以下是使用此方法的一些示例:

// /index.php?r=site%2Findex
echo Url::to(['site/index']);

// /index.php?r=site%2Findex&src=ref1#name
echo Url::to(['site/index', 'src' => 'ref1', '#' => 'name']);

// /index.php?r=post%2Findex     假设别名"@posts"被定义为"/post/index"
echo Url::to(['@posts']);

// the currently requested URL
echo Url::to();

// /images/logo.gif
echo Url::to('@web/images/logo.gif');

// images/logo.gif
echo Url::to('images/logo.gif');

// http://www.example.com/images/logo.gif
echo Url::to('@web/images/logo.gif', true);

// https://www.example.com/images/logo.gif
echo Url::to('@web/images/logo.gif', 'https');

// //www.example.com/images/logo.gif
echo Url::to('@web/images/logo.gif', '');
public static string to ( $url '', $scheme false )
$url array|string

用于生成有效 URL 的参数.

$scheme boolean|string

在生成的 URL 中使用的 URI 方案:

  • false (default): 生成一个相对的 URL.
  • true: 返回与 yii\web\UrlManager::$hostInfo 中的方案相同的绝对基本 URL.
  • string: 使用指定的方案(http, https或用于协议相对 URL 的空字符串)生成绝对 URL.
return string

生成的 URL.

throws yii\base\InvalidArgumentException

在没有活动控制器时给出相对路由.

toRoute() public static 方法

创建给定路由的 URL.

该方法将使用 yii\web\UrlManager 创建 URL.

你可以将路由指定为字符串, eg, site/index.

如果要为正在创建的 URL 指定其它查询参数, 也可以使用数组. 数组的格式必须是:

// generates: /index.php?r=site/index&param1=value1&param2=value2
['site/index', 'param1' => 'value1', 'param2' => 'value2']

如果你想要创建锚点 URL, 可以使用带有#参数的数组格式. 例如:

// generates: /index.php?r=site/index&param1=value1#name
['site/index', 'param1' => 'value1', '#' => 'name']

路由可以是绝对路由也可以是相对路由. 绝对路由以前导斜杠开头(eg. /site/index), 而相对路由则没有(eg. site/index or index).

相对路由将按照以下规则转换为绝对路由:

  • 如果路由是空字符串, 则将使用当前 路由;
  • 如果路由根本不包含任何斜杠(eg. index), 则认为它是当前控制器的一个动作 ID, 并将以 yii\web\Controller::$uniqueId 为前缀;
  • 如果路由没有前导斜杠(eg. site/index), 则认为它是相对于当前模块(module)的路由, 并将以 uniqueId 为前缀.

从版本 2.0.2 开始, 还可以将路由指定为别名(alias). 在这种情况下, 在进行上述转换步骤之前, 别名将首先转换为实际路由.

以下是使用此方法的一些示例:

// /index.php?r=site%2Findex
echo Url::toRoute('site/index');

// /index.php?r=site%2Findex&src=ref1#name
echo Url::toRoute(['site/index', 'src' => 'ref1', '#' => 'name']);

// http://www.example.com/index.php?r=site%2Findex
echo Url::toRoute('site/index', true);

// https://www.example.com/index.php?r=site%2Findex
echo Url::toRoute('site/index', 'https');

// /index.php?r=post%2Findex     假设别名"@posts"被定义为"post/index"
echo Url::toRoute('@posts');
public static string toRoute ( $route, $scheme false )
$route string|array

使用字符串表示的路由(eg. index, site/index), 或者用数组来表示的带有查询参数的路由(eg. ['site/index', 'param1' => 'value1']).

$scheme boolean|string

要在生成的 URL 中使用 URI 方案:

  • false (default): 生成一个相对的 URL.
  • true: 返回与 yii\web\UrlManager::$hostInfo 中的方案相同的绝对基本 URL.
  • string: 使用指定的方案(http, https或用于协议相对 URL 的空字符串)生成绝对 URL.
return string

生成的 URL.

throws yii\base\InvalidArgumentException

在没有活动控制器时给出相对路由.