0 フォロワー

クラス 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() previous()で後で取得できるように、指定されたURLを記憶します。 yii\helpers\BaseUrl
to() 指定されたパラメーターに基づいてURLを作成します。 yii\helpers\BaseUrl
toRoute() 指定されたルートのURLを作成します。 yii\helpers\BaseUrl

保護されたメソッド

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

メソッド 説明 定義元
getUrlManager() yii\helpers\BaseUrl
normalizeRoute() ルートを正規化し、UrlManagerに適したものにします。絶対ルートはそのまま残り、相対ルートは絶対ルートに変換されます。 yii\helpers\BaseUrl

プロパティの詳細

継承されたプロパティを非表示

$urlManager public static property (バージョン 2.0.8 から利用可能)

URLの作成に使用するURLマネージャー

public static yii\web\UrlManager $urlManager null

メソッドの詳細

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

base() public static method

現在のリクエストの基本URLを返します。

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

返される基本URLで使用されるURIスキーム

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

現在要求されているページの標準URLを返します。

標準URLは、現在のコントローラーのyii\web\Controller::$routeyii\web\Controller::$actionParamsを使用して構築されます。レイアウトビューで次のコードを使用して、標準URLに関するlinkタグを追加できます。

$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 (バージョン 2.0.3 から利用可能)

現在のルートと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を返します。
  • 文字列: 指定されたスキーム(httphttps、またはプロトコル相対URLの場合は空文字列)を持つ絶対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 メソッド (バージョン 2.0.11 から利用可能)

指定されたスキームを使用するようにURLを正規化します。

URLが相対的であるか、スキームが文字列でない場合、正規化はスキップされます。

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

処理するURL

$scheme string

URLで使用されるURIスキーム(例:`http`または`https`)。プロトコル相対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 メソッド

ホームURLを返します。

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

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

  • false(デフォルト):相対URLを返す。
  • true: yii\web\UrlManager::$hostInfoと同じスキームを持つ絶対基本URLを返します。
  • 文字列:指定されたスキーム(`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 メソッド

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 メソッド

ルートを正規化し、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 メソッド

以前に記憶された URLを返します。

参照

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 メソッド

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

参照

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 メソッド

指定されたパラメーターに基づいて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を返します。
  • 文字列: 指定されたスキーム(httphttps、またはプロトコル相対URLの場合は空文字列)を持つ絶対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メソッド

指定されたルートの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を返します。
  • 文字列: 指定されたスキーム(httphttps、またはプロトコル相対URLの場合は空文字列)を持つ絶対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);
}