0 フォロワー

クラス 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

メソッドの詳細

継承されたメソッドを非表示

base() public static method

定義元: yii\helpers\BaseUrl::base()

現在のリクエストのベース URL を返します。

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

返されるベース URL で使用する URI スキーム

  • false (デフォルト): ホスト情報を含まないベース URL を返します。
  • true: yii\web\UrlManager::$hostInfo と同じスキームを持つ絶対ベース URL を返します。
  • string: 指定されたスキームを持つ絶対ベース URL を返します (httphttps、またはプロトコル相対 URL の場合は空文字列)。

                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;
}

            
canonical() public static method

定義元: yii\helpers\BaseUrl::canonical()

現在リクエストされているページの正規化された URL を返します。

正規化された URL は、現在のコントローラーの yii\web\Controller::$routeyii\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);
}

            
current() public static method (available since version 2.0.3)

定義元: 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 スキーム

  • false (デフォルト): 相対 URL を生成します。
  • true: yii\web\UrlManager::$hostInfo と同じスキームを持つ絶対ベース URL を返します。
  • string: 指定されたスキームを持つ絶対 URL を生成します (httphttps、またはプロトコル相対 URL の場合は空文字列)。
戻り値 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);
}

            
ensureScheme() public static method (available since version 2.0.11)

定義元: 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;
}

            
getUrlManager() protected static メソッド (バージョン 2.0.8 以降で使用可能)
protected static yii\web\UrlManager getUrlManager ( )
戻り値 yii\web\UrlManager

URLを作成するために使用されるURLマネージャー

                protected static function getUrlManager()
{
    return static::$urlManager ?: Yii::$app->getUrlManager();
}

            
home() public static メソッド

定義先: yii\helpers\BaseUrl::home()

ホーム URL を返します。

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

返されるURLに使用するURIスキーム

  • false(デフォルト):相対URLを返す。
  • true: yii\web\UrlManager::$hostInfo と同じスキームを持つ絶対ベース URL を返します。
  • string:指定されたスキーム(`http`、`https`、またはプロトコル相対URLの場合は空文字列)を持つ絶対URLを返す。
戻り値 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;
}

            
isRelative() public static メソッド

定義先: yii\helpers\BaseUrl::isRelative()

URL が相対的かどうかを示す値を返します。

相対URLにはホスト情報部分がありません。

public static boolean isRelative ( $url )
$url string

チェックするURL

戻り値 boolean

URLが相対的かどうか

                public static function isRelative($url)
{
    return preg_match('~^[[:alpha:]][[:alnum:]+-.]*://|^//~', $url) === 0;
}

            
normalizeRoute() protected static メソッド

定義先: 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, '/');
}

            
previous() public static メソッド
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);
}

            
remember() public static メソッド

定義先: yii\helpers\BaseUrl::remember()

指定された URL を記憶し、後で previous() で取得できるようにします。

参照

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);
    }
}

            
to() public static メソッド

定義先: 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 スキーム

  • false (デフォルト): 相対 URL を生成します。
  • true: yii\web\UrlManager::$hostInfo と同じスキームを持つ絶対ベース URL を返します。
  • string: 指定されたスキームを持つ絶対 URL を生成します (httphttps、またはプロトコル相対 URL の場合は空文字列)。
戻り値 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);
}

            
toRoute() public static メソッド

定義先: yii\helpers\BaseUrl::toRoute()

指定されたルートの URL を作成します。

このメソッドは、yii\web\UrlManager を使用してURLを作成します。

ルートは文字列(例: 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']

ルートは絶対パスまたは相対パスのいずれかです。絶対パスは先頭にスラッシュが付きます(例: /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

ルートを表すには文字列(例: indexsite/index)を使用し、クエリパラメータを含むルートを表すには配列を使用します(例: ['site/index', 'param1' => 'value1'])。

$scheme boolean|string

生成される URL で使用する URI スキーム

  • false (デフォルト): 相対 URL を生成します。
  • true: yii\web\UrlManager::$hostInfo と同じスキームを持つ絶対ベース URL を返します。
  • string: 指定されたスキームを持つ絶対 URL を生成します (httphttps、またはプロトコル相対 URL の場合は空文字列)。
戻り値 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);
}