Browse Source

guide-ja/helper-* revised [ci skip] (#16216)

tags/2.0.16
Nobuo Kihara 6 years ago committed by Alexander Makarov
parent
commit
7b8fef4b1c
  1. 55
      docs/guide-ja/helper-array.md
  2. 52
      docs/guide-ja/helper-html.md
  3. 23
      docs/guide-ja/helper-overview.md
  4. 33
      docs/guide-ja/helper-url.md

55
docs/guide-ja/helper-array.md

@ -1,13 +1,15 @@
配列ヘルパ
==========
[PHP の充実した配列関数](http://php.net/manual/ja/book.array.php) への追加として、Yii の配列ヘルパは、配列をさらに効率的に扱うことを可能にするスタティックなメソッドを提供しています。
[PHP の充実した配列関数](http://php.net/manual/ja/book.array.php) への追加として、
Yii の配列ヘルパは、配列をさらに効率的に扱うことを可能にするスタティックなメソッドを提供しています。
## 値を取得する <span id="getting-values"></span>
配列、オブジェクト、またはその両方から成る複雑な構造から標準的な PHP を使って値を取得することは、非常に面倒くさい仕事です。
最初に `isset` でキーの存在をチェックしなければならず、次に、キーが存在していれば値を取得し、存在していなければ、デフォルト値を提供しなければなりません。
最初に `isset` でキーの存在をチェックしなければならず、次に、キーが存在していれば値を取得し、存在していなければ、
デフォルト値を提供しなければなりません。
```php
class User
@ -45,13 +47,13 @@ $fullName = ArrayHelper::getValue($user, function ($user, $defaultValue) {
});
```
三番目のオプションの引数はデフォルト値であり、指定されない場合は `null` となります。
以下のようにして使用します。
三番目のオプションの引数はデフォルト値であり、指定されない場合は `null` となります。以下のようにして使用します。
```php
$username = ArrayHelper::getValue($comment, 'user.username', 'Unknown');
```
## 値を設定する <span id="setting-values"></span>
```php
@ -115,8 +117,8 @@ $type = ArrayHelper::remove($array, 'type');
## キーの存在をチェックする <span id="checking-existence-of-keys"></span>
`ArrayHelper::keyExists` は、大文字と小文字を区別しないキーの比較をサポートすることを除いて、[array_key_exists](http://php.net/manual/ja/function.array-key-exists.php) と同じ動作をします。
例えば、
`ArrayHelper::keyExists` は、大文字と小文字を区別しないキーの比較をサポートすることを除いて、
[array_key_exists](http://php.net/manual/ja/function.array-key-exists.php) と同じ動作をします。例えば、
```php
$data1 = [
@ -134,8 +136,7 @@ if (!ArrayHelper::keyExists('username', $data1, false) || !ArrayHelper::keyExist
## カラムを取得する <span id="retrieving-columns"></span>
データ行またはオブジェクトの配列から、あるカラムの値を取得する必要があることがよくあります。
良くある例は、ID のリストの取得です。
データ行またはオブジェクトの配列から、あるカラムの値を取得する必要があることがよくあります。良くある例は、ID のリストの取得です。
```php
$array = [
@ -147,7 +148,8 @@ $ids = ArrayHelper::getColumn($array, 'id');
結果は `['123', '345']` となります。
追加の変形が要求されたり、値の取得方法が複雑であったりする場合は、無名関数を二番目の引数として指定することが出来ます。
追加の変形が要求されたり、値の取得方法が複雑であったりする場合は、
無名関数を二番目の引数として指定することが出来ます。
```php
$result = ArrayHelper::getColumn($array, function ($element) {
@ -162,10 +164,12 @@ $result = ArrayHelper::getColumn($array, function ($element) {
入力値は、多次元配列であるか、オブジェクトの配列でなければなりません。
`$key` は、サブ配列のキーの名前、オブジェクトのプロパティの名前、または、キーとして使用される値を返す無名関数とすることが出来ます。
`$groups` 属性はキーの配列であり、入力値の配列を一つまたは複数のサブ配列にグループ化するために使用されます。
`$groups` 属性はキーの配列であす。これは、入力値の配列を一つまたは複数のサブ配列にグループ化するために
キーとして使用されます。
特定の要素の `$key` 属性またはその値が `null` であるとき、`$groups` が定義されていない場合は、その要素は破棄されて、結果には入りません。
そうではなく、`$groups` が指定されている場合は、配列の要素はキー無しで結果の配列に追加されます。
そうではなく、`$groups` が指定されている場合は、
配列の要素はキー無しで結果の配列に追加されます。
例えば、
@ -224,7 +228,8 @@ $result = ArrayHelper::index($array, 'data', [function ($element) {
}, 'device']);
```
結果は、最初のレベルが `id` でグループ化され、第2のレベルが `device` でグループ化され、第3のレベルが `data` でインデックスされた連想配列になります。
結果は、最初のレベルが `id` でグループ化され、第2のレベルが `device` でグループ化され、
第3のレベルが `data` でインデックスされた連想配列になります。
```php
[
@ -244,13 +249,11 @@ $result = ArrayHelper::index($array, 'data', [function ($element) {
]
```
## マップを作成する <span id="building-maps"></span>
多次元配列またはオブジェクトの配列からマップ (キー・値 のペア) を作成するためには `map` メソッドを使うことが出来ます。
`$from``$to` のパラメータで、マップを構成するキー名またはプロパティ名を指定します。
オプションで、グループ化のためのフィールド `$group` に従って、マップをグループ化することも出来ます。
例えば、
オプションで、グループ化のためのフィールド `$group` に従って、マップをグループ化することも出来ます。例えば、
```php
$array = [
@ -283,8 +286,7 @@ $result = ArrayHelper::map($array, 'id', 'name', 'class');
## 多次元配列の並べ替え <span id="multidimensional-sorting"></span>
`multisort` メソッドは、オブジェクトの配列または入れ子にされた配列を、一つまたは複数のキーによって並べ替えることを手助けします。
例えば、
`multisort` メソッドは、オブジェクトの配列または入れ子にされた配列を、一つまたは複数のキーによって並べ替えることを手助けします。例えば、
```php
$data = [
@ -318,7 +320,8 @@ ArrayHelper::multisort($data, function($item) {
一つのキーによる並べ替えの場合は、`SORT_ASC` か `SORT_DESC` のいずれかです。
複数の値による並べ替えの場合は、並べ替えの順序の配列を渡して、値ごとに違う順序で並べ替えることが出来ます。
最後の引数は並べ替えのフラグで、PHP の [sort()](http://php.net/manual/ja/function.sort.php) 関数に渡されるのと同じ値を取ることが出来ます。
最後の引数は並べ替えのフラグで、
PHP の [sort()](http://php.net/manual/ja/function.sort.php) 関数に渡されるのと同じ値を取ることが出来ます。
## 配列の型を検出する <span id="detecting-array-types"></span>
@ -345,15 +348,15 @@ $encoded = ArrayHelper::htmlEncode($data);
$decoded = ArrayHelper::htmlDecode($data);
```
デフォルトでは、値だけがエンコードされます。
二番目の引数を `false` として渡すことによって、配列のキーもエンコードすることが出来ます。
デフォルトでは、値だけがエンコードされます。二番目の引数を `false` として渡すことによって、配列のキーもエンコードすることが出来ます。
エンコードにはアプリケーションの文字セットが使用されますが、三番目の引数によってそれを変更することも出来ます。
## 配列をマージする <span id="merging-arrays"></span>
[[yii\helpers\ArrayHelper::merge()|ArrayHelper::merge()]] を使って、二つまたはそれ以上の配列を再帰的に一つの配列にマージすることが出来ます。
各配列に同じ文字列のキー値を持つ要素がある場合は、([array_merge_recursive()](http://php.net/manual/ja/function.array-merge-recursive.php) とは違って)後のものが前のものを上書きします。
各配列に同じ文字列のキー値を持つ要素がある場合は、
([array_merge_recursive()](http://php.net/manual/ja/function.array-merge-recursive.php) とは違って)後のものが前のものを上書きします。
両方の配列が、同じキーを持つ配列型の要素を持っている場合は、再帰的なマージが実行されます。
添字型の要素については、後の配列の要素が前の配列の要素の後に追加されます。
[[yii\helpers\UnsetArrayValue]] オブジェクトを使って前の配列にある値を非設定に指定したり、
@ -419,8 +422,7 @@ $result = ArrayHelper::merge($array1, $array2);
## オブジェクトを配列に変換する <span id="converting-objects-to-arrays"></span>
オブジェクトまたはオブジェクトの配列を配列に変換する必要があることがよくあります。
最もよくあるのは、REST API によってデータ配列を提供するなどの目的で、アクティブ・レコード・モデルを変換する場合です。
そうするために、次のコードを使うことが出来ます。
最もよくあるのは、REST API によってデータ配列を提供するなどの目的で、アクティブ・レコード・モデルを変換する場合です。そうするために、次のコードを使うことが出来ます。
```php
$posts = Post::find()->limit(10)->all();
@ -440,8 +442,7 @@ $data = ArrayHelper::toArray($posts, [
最初の引数が変換したいデータです。この例では、`Post` AR モデルを変換しようとしています。
二番目の引数は、クラスごとの変換マップです。
ここでは、`Post` モデルの変換マップを設定しています。
二番目の引数は、クラスごとの変換マップです。ここでは、`Post` モデルの変換マップを設定しています。
変換マップの配列が、一連のマップを含んでいます。各マップは以下のいずれかの形式を取ります。
- フィールド名 - そのままインクルードされる。
@ -460,7 +461,8 @@ $data = ArrayHelper::toArray($posts, [
]
```
特定のクラスについて、配列に変換するデフォルトの方法を提供するためには、そのクラスの [[yii\base\Arrayable|Arrayable]] インタフェイスを実装することが出来ます。
特定のクラスについて、配列に変換するデフォルトの方法を提供するためには、
そのクラスの [[yii\base\Arrayable|Arrayable]] インタフェイスを実装することが出来ます。
## 配列の中にあるかどうか調べる <span id="testing-arrays"></span>
@ -479,5 +481,4 @@ ArrayHelper::isIn('a', new ArrayObject(['a']));
// true
ArrayHelper::isSubset(new ArrayObject(['a', 'c']), new ArrayObject(['a', 'b', 'c']));
```

52
docs/guide-ja/helper-html.md

@ -24,12 +24,10 @@ Yii はそのような手助けを Html ヘルパの形式で提供します。
<?= Html::tag('p', Html::encode($user->name), ['class' => 'username']) ?>
```
最初の引数はタグの名前です。
二番目の引数は、開始タグと終了タグの間に囲まれることになるコンテントです。
最初の引数はタグの名前です。二番目の引数は、開始タグと終了タグの間に囲まれることになるコンテントです。
`Html::encode` を使っていることに注目してください。
これは、必要な場合には HTML を使うことが出来るように、コンテントが自動的にはエンコードされないからです。
三番目の引数は HTML のオプション、言い換えると、タグの属性です。
この配列で、キーは `class`、`href`、`target` などの属性の名前であり、値は属性の値です。
三番目の引数は HTML のオプション、言い換えると、タグの属性です。この配列で、キーは `class`、`href`、`target` などの属性の名前であり、値は属性の値です。
上記のコードは次の HTML を生成します。
@ -43,13 +41,16 @@ Yii はそのような手助けを Html ヘルパの形式で提供します。
その全ての場合において、いくつか追加の処理がなされることを知っておいてください。
- 値が `null` である場合は、対応する属性はレンダリングされません。
- 値が真偽値である属性は、[真偽値属性 (boolean attributes)](http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes) として扱われます。
- 値が真偽値である属性は、[真偽値属性 (boolean attributes)](http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes)
として扱われます。
- 属性の値は [[yii\helpers\Html::encode()|Html::encode()]] を使って HTML エンコードされます。
- 属性の値が配列である場合は、次のように処理されます。
* 属性が [[yii\helpers\Html::$dataAttributes]] にリストされているデータ属性である場合、例えば `data``ng` である場合は、値の配列にある要素の一つ一つについて、属性のリストがレンダリングされます。
* 属性が [[yii\helpers\Html::$dataAttributes]] にリストされているデータ属性である場合、例えば `data``ng` である場合は、
値の配列にある要素の一つ一つについて、属性のリストがレンダリングされます。
例えば、`'data' => ['id' => 1, 'name' => 'yii']` は `data-id="1" data-name="yii"` を生成します。
また、`'data' => ['params' => ['id' => 1, 'name' => 'yii'], 'status' => 'ok']` は `data-params='{"id":1,"name":"yii"}' data-status="ok"` を生成します。
また、`'data' => ['params' => ['id' => 1, 'name' => 'yii'], 'status' => 'ok']` は
`data-params='{"id":1,"name":"yii"}' data-status="ok"` を生成します。
後者の例において、下位の配列に対して JSON 形式が使用されていることに注意してください。
* 属性がデータ属性でない場合は、値は JSON エンコードされます。
例えば、`['params' => ['id' => 1, 'name' => 'yii']` は `params='{"id":1,"name":"yii"}'` を生成します。
@ -136,7 +137,8 @@ Html::addCssStyle($options, 'height: 200px; position: absolute;');
Html::removeCssStyle($options, ['width', 'height']);
```
[[yii\helpers\Html::addCssStyle()|addCssStyle()]] を使うときには、CSS プロパティの名前と値に対応する「キー-値」ペアの配列か、または、`width: 100px; height: 200px;` のような文字列を指定することが出来ます。
[[yii\helpers\Html::addCssStyle()|addCssStyle()]] を使うときには、CSS プロパティの名前と値に対応する「キー-値」ペアの配列か、
または、`width: 100px; height: 200px;` のような文字列を指定することが出来ます。
この二つの形式は、[[yii\helpers\Html::cssStyleFromArray()|cssStyleFromArray()]] と [[yii\helpers\Html::cssStyleToArray()|cssStyleToArray()]] を使って、双方向に変換することが出来ます。
[[yii\helpers\Html::removeCssStyle()|removeCssStyle()]] メソッドは、削除すべきプロパティの配列を受け取ります。
プロパティが一つだけである場合は、文字列で指定することも出来ます。
@ -145,9 +147,11 @@ Html::removeCssStyle($options, ['width', 'height']);
### コンテントをエンコードおよびデコードする <span id="encoding-and-decoding-content"></span>
コンテントが適切かつ安全に HTML として表示されるためには、コンテント内の特殊文字がエンコードされなければなりません。
特殊文字のエンコードとデコードは、PHP では [htmlspecialchars](http://www.php.net/manual/ja/function.htmlspecialchars.php) と [htmlspecialchars_decode](http://www.php.net/manual/ja/function.htmlspecialchars-decode.php) によって行われます。
特殊文字のエンコードとデコードは、PHP では [htmlspecialchars](http://www.php.net/manual/ja/function.htmlspecialchars.php) と
[htmlspecialchars_decode](http://www.php.net/manual/ja/function.htmlspecialchars-decode.php) によって行われます。
これらのメソッドを直接使用する場合の問題は、文字エンコーディングと追加のフラグを毎回指定しなければならないことです。
フラグは毎回同じものであり、文字エンコーディングはセキュリティ問題を防止するためにアプリケーションのそれと一致すべきものですから、Yii は二つのコンパクトかつ使いやすいメソッドを用意しました。
フラグは毎回同じものであり、文字エンコーディングはセキュリティ問題を防止するためにアプリケーションのそれと一致すべきものですから、
Yii は二つのコンパクトかつ使いやすいメソッドを用意しました。
```php
$userName = Html::encode($user->name);
@ -173,10 +177,8 @@ $decodedUserName = Html::decode($userName);
<?= Html::beginForm(['order/update', 'id' => $id], 'post', ['enctype' => 'multipart/form-data']) ?>
```
最初の引数は、フォームが送信されることになる URL です。
これは [[yii\helpers\Url::to()|Url::to()]] によって受け入れられる Yii のルートおよびパラメータの形式で指定することが出来ます。
第二の引数は使われるメソッドです。`post` がデフォルトです。
第三の引数はフォームタグのオプションの配列です。
最初の引数は、フォームが送信されることになる URL です。これは [[yii\helpers\Url::to()|Url::to()]] によって受け入れられる Yii のルートおよびパラメータの形式で指定することが出来ます。
第二の引数は使われるメソッドです。`post` がデフォルトです。第三の引数はフォームタグのオプションの配列です。
上記の場合では、POST リクエストにおけるフォーム・データのエンコーディング方法を `multipart/form-data` に変更しています。
これはファイルをアップロードするために必要とされます。
@ -248,8 +250,7 @@ $decodedUserName = Html::decode($userName);
<?= Html::activeListBox($users, 'id', ArrayHelper::map($userModels, 'id', 'name')) ?>
```
最初の引数はインプットの名前、第二の引数は現在選択されている値です。
そして第三の引数は「キー-値」のペアであり、配列のキーはリストの値、配列の値はリストのラベルです。
最初の引数はインプットの名前、第二の引数は現在選択されている値です。そして第三の引数は「キー-値」のペアであり、配列のキーはリストの値、配列の値はリストのラベルです。
複数の選択肢を選択できるようにしたい場合は、チェックボックス・リストが最適です。
@ -268,8 +269,7 @@ $decodedUserName = Html::decode($userName);
### ラベルとエラー <span id="labels-and-errors"></span>
インプットと同じように、ラベルを生成するメソッドが二つあります。
モデルからデータを取るアクティブなラベルと、データを直接受け入れるアクティブでないラベルです。
インプットと同じように、ラベルを生成するメソッドが二つあります。モデルからデータを取るアクティブなラベルと、データを直接受け入れるアクティブでないラベルです。
```php
<?= Html::label('ユーザ名', 'username', ['class' => 'label username']) ?>
@ -308,9 +308,7 @@ echo Html::getAttributeValue($post, 'title');
echo Html::getAttributeValue($post, '[0]authors[0]');
```
上記において、最初の引数はモデルであり、第二の引数は属性を示す式です。
これは最も単純な形式においては属性名ですが、配列の添字を前 および/または 後に付けた属性名とすることも出来ます。
配列の添字は主として表形式データ入力のために使用されます。
上記において、最初の引数はモデルであり、第二の引数は属性を示す式です。これは最も単純な形式においては属性名ですが、配列の添字を前 および/または 後に付けた属性名とすることも出来ます。配列の添字は主として表形式データ入力のために使用されます。
- `[0]content` は、表形式データ入力で使われます。表形式入力の最初のモデルの "content" 属性を表します。
- `dates[0]` は、"dates" 属性の最初の配列要素を表します。
@ -355,8 +353,7 @@ CSS ファイルの外部スタイルをリンクしたい場合は、次のよ
<![endif]-->
```
最初の引数は URL であり、第二の引数はオプションの配列です。
通常のオプションに加えて、次のものを指定することが出来ます。
最初の引数は URL であり、第二の引数はオプションの配列です。通常のオプションに加えて、次のものを指定することが出来ます。
- `condition` - 指定された条件を使って `<link` を条件付きコメントで囲みます。
条件付きコメントなんて、使う必要が無くなっちゃえば良いのにね ;)
@ -369,8 +366,7 @@ JavaScript ファイルをリンクするためには、次のようにします
<?= Html::jsFile('@web/js/main.js') ?>
```
CSS と同じように、最初の引数はインクルードされるファイルへのリンクを指定するものです。
オプションを第二の引数として渡すことが出来ます。
CSS と同じように、最初の引数はインクルードされるファイルへのリンクを指定するものです。オプションを第二の引数として渡すことが出来ます。
オプションに置いて、`cssFile` のオプションと同じように、`condition` を指定することが出来ます。
@ -382,8 +378,7 @@ CSS と同じように、最初の引数はインクルードされるファイ
<?= Html::a('プロファイル', ['user/view', 'id' => $id], ['class' => 'profile-link']) ?>
```
最初の引数はタイトルです。
これはエンコードされませんので、エンド・ユーザから取得したデータを使う場合は、`Html::encode()` でエンコードする必要があります。
最初の引数はタイトルです。これはエンコードされませんので、エンド・ユーザから取得したデータを使う場合は、`Html::encode()` でエンコードする必要があります。
第二の引数が、`<a` タグの `href` に入ることになるものです
どのような値が受け入れられるかについて、詳細は [Url::to()](helper-url.md) を参照してください。
第三の引数は、タグのプロパティの配列です。
@ -407,8 +402,7 @@ CSS と同じように、最初の引数はインクルードされるファイ
<img src="http://example.com/images/logo.png" alt="私のロゴ" />
```
最初の引数は、[エイリアス](concept-aliases.md) 以外にも、ルートとパラメータ、または URL を受け入れることが出来ます。
[Url::to()](helper-url.md) と同様です。
最初の引数は、[エイリアス](concept-aliases.md) 以外にも、ルートとパラメータ、または URL を受け入れることが出来ます。[Url::to()](helper-url.md) と同様です。
## リスト <span id="lists"></span>

23
docs/guide-ja/helper-overview.md

@ -4,10 +4,10 @@
> Note: このセクションはまだ執筆中です。
Yii は、一般的なコーディングのタスク、例えば、文字列や配列の操作、HTML コードの生成などを手助けする多くのクラスを提供しています。
これらのヘルパ・クラスは `yii\helpers` 名前空間の下に編成されており、すべてスタティックなクラス (すなわち、スタティックなプロパティとメソッドのみを含み、インスタンス化すべきでないクラス) です。
これらのヘルパ・クラスは `yii\helpers` 名前空間の下に編成されており、すべてスタティックなクラス
(すなわち、スタティックなプロパティとメソッドのみを含み、インスタンス化すべきでないクラス) です。
ヘルパ・クラスは、そのスタティックなメソッドの一つを直接に呼び出すことによって使用します。
例えば、
ヘルパ・クラスは、そのスタティックなメソッドの一つを直接に呼び出すことによって使用します。例えば、
```php
use yii\helpers\Html;
@ -43,10 +43,13 @@ echo Html::encode('Test > test');
ヘルパ・クラスをカスタマイズする <span id="customizing-helper-classes"></span>
------------------------------
コア・ヘルパ・クラス (例えば [[yii\helpers\ArrayHelper]]) をカスタマイズするためには、そのヘルパに対応する基底クラス (例えば [[yii\helpers\BaseArrayHelper]]) を拡張するクラスを作成して、名前空間も含めて、対応する具象クラス (例えば [[yii\helpers\ArrayHelper]]) と同じ名前を付けます。
コア・ヘルパ・クラス (例えば [[yii\helpers\ArrayHelper]]) をカスタマイズするためには、
そのヘルパに対応する基底クラス (例えば [[yii\helpers\BaseArrayHelper]]) を拡張するクラスを作成して、名前空間も含めて、
対応する具象クラス (例えば [[yii\helpers\ArrayHelper]]) と同じ名前を付けます。
このクラスが、フレームワークのオリジナルの実装を置き換えるものとしてセットアップされます。
次の例は、[[yii\helpers\ArrayHelper]] クラスの [[yii\helpers\ArrayHelper::merge()|merge()]] メソッドをカスタマイズする方法を示すものです。
次の例は、[[yii\helpers\ArrayHelper]] クラスの [[yii\helpers\ArrayHelper::merge()|merge()]]
メソッドをカスタマイズする方法を示すものです。
```php
<?php
@ -62,14 +65,16 @@ class ArrayHelper extends BaseArrayHelper
}
```
あなたのクラスを `ArrayHelper.php` という名前のファイルに保存します。
このファイルはどこに置いても構いません。例えば、`@app/components` に置くことにしましょう。
あなたのクラスを `ArrayHelper.php` という名前のファイルに保存します。このファイルはどこに置いても構いません。例えば、`@app/components` に置くことにしましょう。
次に、アプリケーションの [エントリ・スクリプト](structure-entry-scripts.md) で、次のコード行を `yii.php` ファイルをインクルードする行の後に追加して、[Yii クラス・オートローダ](concept-autoloading.md) に、フレームワークから本来のヘルパ・クラスをロードする代りに、あなたのカスタム・クラスをロードすべきことを教えます。
次に、アプリケーションの [エントリ・スクリプト](structure-entry-scripts.md) で、
次のコード行を `yii.php` ファイルをインクルードする行の後に追加して、[Yii クラス・オートローダ](concept-autoloading.md) に、
フレームワークから本来のヘルパ・クラスをロードする代りに、あなたのカスタム・クラスをロードすべきことを教えます。
```php
Yii::$classMap['yii\helpers\ArrayHelper'] = '@app/components/ArrayHelper.php';
```
ヘルパ・クラスのカスタマイズは、ヘルパの既存の関数の振る舞いを変更したい場合にだけ役立つものであることに注意してください。
アプリケーションの中で使用する関数を追加したい場合は、そのための独立したヘルパを作成する方が良いでしょう。
アプリケーションの中で使用する関数を追加したい場合は、
そのための独立したヘルパを作成する方が良いでしょう。

33
docs/guide-ja/helper-url.md

@ -6,8 +6,7 @@ Url ヘルパは URL を管理するための一連のスタティック・メ
## よく使う URL を取得する <span id="getting-common-urls"></span>
よく使う URL を取得するために使うことが出来るメソッドが二つあります。
すなわち、ホーム URL と、現在のリクエストのベース URL を取得するメソッドです。
よく使う URL を取得するために使うことが出来るメソッドが二つあります。すなわち、ホーム URL と、現在のリクエストのベース URL を取得するメソッドです。
ホーム URL を取得するためには、次のようにします。
```php
@ -17,8 +16,7 @@ $httpsAbsoluteHomeUrl = Url::home('https');
```
パラメータが渡されない場合は、生成される URL は相対 URL になります。
パラメータとして `true` を渡せば、現在のスキーマの絶対 URL を取得することが出来ます。
または、スキーマ (`http`, `https`) を明示的に指定しても構いません。
パラメータとして `true` を渡せば、現在のスキーマの絶対 URL を取得することが出来ます。または、スキーマ (`http`, `https`) を明示的に指定しても構いません。
現在のリクエストのベース URL を取得するためには、次のようにします。
@ -41,8 +39,7 @@ $url = Url::toRoute(['product/view', 'id' => 42]);
```
ルートは、文字列として指定することが出来ます (例えば、`site/index`)。
または、生成される URL に追加のクエリ・パラメータを指定したい場合は、配列を使うことも出来ます。
配列の形式は、以下のようにしなければなりません。
または、生成される URL に追加のクエリ・パラメータを指定したい場合は、配列を使うことも出来ます。配列の形式は、以下のようにしなければなりません。
```php
// /index.php?r=site%2Findex&param1=value1&param2=value2 を生成
@ -56,16 +53,18 @@ $url = Url::toRoute(['product/view', 'id' => 42]);
['site/index', 'param1' => 'value1', '#' => 'name']
```
ルートは、絶対ルートか相対ルートかのどちらかです。
絶対ルートは先頭にスラッシュを持ち (例えば `/site/index`)、相対ルートは持ちません (例えば `site/index` または `index`)。
ルートは、絶対ルートか相対ルートかのどちらかです。絶対ルートは先頭にスラッシュを持ち (例えば `/site/index`)、相対ルートは持ちません (例えば `site/index` または `index`)。
相対ルートは次の規則に従って絶対ルートに変換されます。
- ルートが空文字列である場合は、現在の [[yii\web\Controller::route|ルート]] が使用されます。
- ルートがスラッシュを全く含まない場合は (例えば `index`)、カレント・コントローラのアクション ID であると見なされて、カレント・コントローラの [[\yii\web\Controller::uniqueId|uniqueId]] が前置されます。
- ルートが先頭にスラッシュを含まない場合は (例えば `site/index`)、カレント・モジュールに対する相対ルートと見なされて、カレント・モジュールの [[\yii\base\Module::uniqueId|uniqueId]] が前置されます。
- ルートがスラッシュを全く含まない場合は (例えば `index`)、カレント・コントローラのアクション ID であると見なされて、
カレント・コントローラの [[\yii\web\Controller::uniqueId|uniqueId]] が前置されます。
- ルートが先頭にスラッシュを含まない場合は (例えば `site/index`)、カレント・モジュールに対する相対ルートと見なされて、
カレント・モジュールの [[\yii\base\Module::uniqueId|uniqueId]] が前置されます。
バージョン 2.0.2 以降では、[エイリアス](concept-aliases.md) の形式でルートを指定することが出来ます。
その場合は、エイリアスが最初に実際のルートに変換され、そのルートが上記の規則に従って絶対ルートに変換されます。
その場合は、エイリアスが最初に実際のルートに変換され、
そのルートが上記の規則に従って絶対ルートに変換されます。
以下に、このメソッドの使用例をいくつか挙げます。
@ -87,18 +86,20 @@ echo Url::toRoute('site/index', 'https');
```
もうひとつ、[[toRoute()]] と非常によく似た `Url::to()` というメソッドがあります。
唯一の違いは、このメソッドはルートを配列として指定することを要求する、という点です。
文字列が与えられた場合は、URL として扱われます。
唯一の違いは、このメソッドはルートを配列として指定することを要求する、という点です。文字列が与えられた場合は、URL として扱われます。
最初の引数は、次のいずれかを取り得ます。
- 配列: URL を生成するために [[toRoute()]] が呼び出されます。例えば、`['site/index']`、`['post/index', 'page' => 2]`。
- 配列: URL を生成するために [[toRoute()]] が呼び出されます。
例えば、`['site/index']`、`['post/index', 'page' => 2]`。
ルートの指定方法の詳細については [[toRoute()]] を参照してください。
- `@` で始まる文字列: これはエイリアスとして扱われ、エイリアスに対応する文字列が返されます。
- `@` で始まる文字列: これはエイリアスとして扱われ、
エイリアスに対応する文字列が返されます。
- 空文字列: 現在リクエストされている URL が返されます。
- 通常の文字列: その通りのものとして扱われます。
`$scheme` (文字列または `true`) が指定された場合は、ホスト情報 ([[\yii\web\UrlManager::hostInfo]] から取得されます) を伴う絶対 URL が返されます。
`$scheme` (文字列または `true`) が指定された場合は、ホスト情報 ([[\yii\web\UrlManager::hostInfo]] から取得されます)
を伴う絶対 URL が返されます。
`$url` が既に絶対 URL であった場合には、スキームが指定されたものに置き換えられます。
下記にいくつかの用例を挙げます。

Loading…
Cancel
Save