クラス yii\helpers\Url
継承 | yii\helpers\Url » yii\helpers\BaseUrl |
---|---|
利用可能バージョン | 2.0 |
ソースコード | https://github.com/yiisoft/yii2/blob/master/framework/helpers/Url.php |
Url は、URL を管理するための静的メソッドのセットを提供します。
Url の詳細と使用方法については、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() | yii\helpers\BaseUrl | |
normalizeRoute() | ルートを正規化し、UrlManager に適したものにします。絶対ルートはそのまま残り、相対ルートは絶対ルートに変換されます。 | yii\helpers\BaseUrl |
メソッドの詳細
定義元: yii\helpers\BaseUrl::base()
現在のリクエストのベース URL を返します。
public static string base ( $scheme = false ) | ||
$scheme | boolean|string |
返されるベース URL で使用する URI スキーム
|
public static function base($scheme = false)
{
$url = static::getUrlManager()->getBaseUrl();
if ($scheme !== false) {
$url = static::getUrlManager()->getHostInfo() . $url;
$url = static::ensureScheme($url, $scheme);
}
return $url;
}
定義元: yii\helpers\BaseUrl::canonical()
現在リクエストされているページの正規化された URL を返します。
正規化された URL は、現在のコントローラーの yii\web\Controller::$route と yii\web\Controller::$actionParams を使用して構築されます。レイアウトビューで次のコードを使用して、正規化されたURLに関するリンクタグを追加できます。
$this->registerLinkTag(['rel' => 'canonical', 'href' => Url::canonical()]);
public static string canonical ( ) | ||
戻り値 | string |
現在リクエストされているページの正規化された URL |
---|
public static function canonical()
{
$params = Yii::$app->controller->actionParams;
$params[0] = Yii::$app->controller->getRoute();
return static::getUrlManager()->createAbsoluteUrl($params);
}
定義元: yii\helpers\BaseUrl::current()
現在のルートと GET パラメーターを使用して URL を作成します。
GET パラメーターの一部を変更または削除したり、$params
パラメーターを介して追加のクエリパラメーターを追加したりできます。特に、パラメーターを null に指定すると、そのパラメーターは既存の GET パラメーターから削除されます。$params
で指定された他のすべてのパラメーターは、既存の GET パラメーターとマージされます。たとえば、
// assume $_GET = ['id' => 123, 'src' => 'google'], current route is "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]);
最後に `[]` で配列パラメーターを置き換える場合は、`$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 パラメーターとマージされるパラメーターの連想配列。パラメーターの値が null の場合、対応する GET パラメーターは削除されます。 |
$scheme | boolean|string |
生成される URL で使用する URI スキーム
|
戻り値 | string |
生成された URL |
---|
public static function current(array $params = [], $scheme = false)
{
$currentParams = Yii::$app->getRequest()->getQueryParams();
$currentParams[0] = '/' . Yii::$app->controller->getRoute();
$route = array_replace_recursive($currentParams, $params);
return static::toRoute($route, $scheme);
}
定義元: yii\helpers\BaseUrl::ensureScheme()
指定されたスキームを使用するように URL を正規化します。
URL が相対的であるか、スキームが文字列でない場合、正規化はスキップされます。
public static string ensureScheme ( $url, $scheme ) | ||
$url | string |
処理する URL |
$scheme | string |
URL(例: `http` または `https`)で使用されるURIスキームです。プロトコル相対URL(例: `//example.com/path`)を作成するには、空文字列を使用します。 |
戻り値 | string |
処理済みのURL |
---|
public static function ensureScheme($url, $scheme)
{
if (static::isRelative($url) || !is_string($scheme)) {
return $url;
}
if (strncmp($url, '//', 2) === 0) {
// e.g. //example.com/path/to/resource
return $scheme === '' ? $url : "$scheme:$url";
}
if (($pos = strpos($url, '://')) !== false) {
if ($scheme === '') {
$url = substr($url, $pos + 1);
} else {
$url = $scheme . substr($url, $pos);
}
}
return $url;
}
protected static yii\web\UrlManager getUrlManager ( ) | ||
戻り値 | yii\web\UrlManager |
URLを作成するために使用されるURLマネージャー |
---|
protected static function getUrlManager()
{
return static::$urlManager ?: Yii::$app->getUrlManager();
}
定義先: yii\helpers\BaseUrl::home()
ホーム URL を返します。
public static string home ( $scheme = false ) | ||
$scheme | boolean|string |
返されるURLに使用するURIスキーム
|
戻り値 | string |
ホームURL |
---|
public static function home($scheme = false)
{
$url = Yii::$app->getHomeUrl();
if ($scheme !== false) {
$url = static::getUrlManager()->getHostInfo() . $url;
$url = static::ensureScheme($url, $scheme);
}
return $url;
}
public static boolean isRelative ( $url ) | ||
$url | string |
チェックするURL |
戻り値 | boolean |
URLが相対的かどうか |
---|
public static function isRelative($url)
{
return preg_match('~^[[:alpha:]][[:alnum:]+-.]*://|^//~', $url) === 0;
}
定義先: yii\helpers\BaseUrl::normalizeRoute()
ルートを正規化し、UrlManager に適したものにします。絶対ルートはそのまま残り、相対ルートは絶対ルートに変換されます。
相対ルートとは、先頭にスラッシュがないルートのことです(例: "view"、"post/view")。
- ルートが空文字列の場合、現在のルートが使用されます。
- ルートにスラッシュが全く含まれていない場合、現在のコントローラーのアクションIDとみなされ、yii\web\Controller::$uniqueId が前に付けられます。
- ルートの先頭にスラッシュがない場合、現在のモジュールを基準とした相対ルートとみなされ、モジュールのuniqueIdが前に付けられます。
バージョン2.0.2以降、ルートはエイリアスとして指定することもできます。この場合、エイリアスは上記の変換手順を実行する前に実際のルートに変換されます。
protected static string normalizeRoute ( $route ) | ||
$route | string |
ルート。絶対ルートまたは相対ルートのいずれかです。 |
戻り値 | string |
UrlManagerに適した正規化されたルート |
---|---|---|
例外発生 | yii\base\InvalidArgumentException |
アクティブなコントローラーがないのに相対ルートが指定された場合 |
protected static function normalizeRoute($route)
{
$route = Yii::getAlias((string) $route);
if (strncmp($route, '/', 1) === 0) {
// absolute route
return ltrim($route, '/');
}
// relative route
if (Yii::$app->controller === null) {
throw new InvalidArgumentException("Unable to resolve the relative route: $route. No active controller is available.");
}
if (strpos($route, '/') === false) {
// empty or an action ID
return $route === '' ? Yii::$app->controller->getRoute() : Yii::$app->controller->getUniqueId() . '/' . $route;
}
// relative to module
return ltrim(Yii::$app->controller->module->getUniqueId() . '/' . $route, '/');
}
public static string|null previous ( $name = null ) | ||
$name | string|null |
以前に記憶されたURLに関連付けられた名前。設定されていない場合、yii\web\User::getReturnUrl() を使用して記憶されたURLを取得します。 |
戻り値 | string|null |
以前に記憶されたURL。指定された名前でURLが記憶されておらず、`$name`が指定されていない場合は、Nullを返します。 |
---|
public static function previous($name = null)
{
if ($name === null) {
return Yii::$app->getUser()->getReturnUrl();
}
return Yii::$app->getSession()->get($name);
}
public static void remember ( $url = '', $name = null ) | ||
$url | string|array |
記憶するURL。to()で許容される形式を参照してください。このパラメーターが指定されていない場合、現在要求されているURLが使用されます。 |
$name | string|null |
記憶するURLに関連付けられた名前。後でprevious()で使用できます。設定されていない場合、渡されたURLを使用してyii\web\User::setReturnUrl() が使用されます。 |
public static function remember($url = '', $name = null)
{
$url = static::to($url);
if ($name === null) {
Yii::$app->getUser()->setReturnUrl($url);
} else {
Yii::$app->getSession()->set($name, $url);
}
}
定義先: yii\helpers\BaseUrl::to()
指定されたパラメーターに基づいて 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 assume the alias "@posts" is defined as "/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');
// https://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 スキーム
|
戻り値 | string |
生成された URL |
---|---|---|
例外発生 | yii\base\InvalidArgumentException |
アクティブなコントローラーがないのに相対ルートが指定された場合 |
public static function to($url = '', $scheme = false)
{
if (is_array($url)) {
return static::toRoute($url, $scheme);
}
$url = Yii::getAlias($url);
if ($url === '') {
$url = Yii::$app->getRequest()->getUrl();
}
if ($scheme === false) {
return $url;
}
if (static::isRelative($url)) {
// turn relative URL into absolute
$url = static::getUrlManager()->getHostInfo() . '/' . ltrim($url, '/');
}
return static::ensureScheme($url, $scheme);
}
定義先: yii\helpers\BaseUrl::toRoute()
指定されたルートの URL を作成します。
このメソッドは、yii\web\UrlManager を使用してURLを作成します。
ルートは文字列(例: site/index
)で指定できます。URLにクエリパラメータを追加したい場合は、配列を使用することもできます。配列のフォーマットは以下の通りです。
// generates: /index.php?r=site/index¶m1=value1¶m2=value2
['site/index', 'param1' => 'value1', 'param2' => 'value2']
アンカー付きのURLを作成する場合は、#
パラメータを含む配列フォーマットを使用できます。例:
// generates: /index.php?r=site/index¶m1=value1#name
['site/index', 'param1' => 'value1', '#' => 'name']
ルートは絶対パスまたは相対パスのいずれかです。絶対パスは先頭にスラッシュが付きます(例: /site/index
)。相対パスにはスラッシュがありません(例: site/index
または index
)。相対パスは、以下のルールに従って絶対パスに変換されます。
- ルートが空文字列の場合、現在のルートが使用されます。
- ルートにスラッシュが含まれていない場合(例:
index
)、現在のコントローラのaction IDとみなされ、yii\web\Controller::$uniqueId が前に付加されます。 - ルートに先頭のスラッシュがない場合(例:
site/index
)、現在のモジュールを基準とした相対ルートとみなされ、モジュールのuniqueId が前に付加されます。
バージョン2.0.2以降、ルートはエイリアスとして指定することもできます。この場合、エイリアスは上記の変換手順を実行する前に実際のルートに変換されます。
このメソッドの使用方法の例を以下に示します。
// /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']);
// https://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 assume the alias "@posts" is defined as "post/index"
echo Url::toRoute('@posts');
public static string toRoute ( $route, $scheme = false ) | ||
$route | string|array |
ルートを表すには文字列(例: |
$scheme | boolean|string |
生成される URL で使用する URI スキーム
|
戻り値 | string |
生成された URL |
---|---|---|
例外発生 | yii\base\InvalidArgumentException |
アクティブなコントローラーがないのに相対ルートが指定された場合 |
public static function toRoute($route, $scheme = false)
{
$route = (array) $route;
$route[0] = static::normalizeRoute($route[0]);
if ($scheme !== false) {
return static::getUrlManager()->createAbsoluteUrl($route, is_string($scheme) ? $scheme : null);
}
return static::getUrlManager()->createUrl($route);
}
コメントするには、サインアップ または ログインしてください。