mirror of
https://github.com/yiisoft/yii2.git
synced 2025-08-26 06:15:19 +08:00
guide-ja revised [ci skip] (#16143)
* guide-ja/intro revised [ci skip] * docs/guide-ja/start-* revised [ci skip] * docs/guide-ja translation for "Active Record" revised [ci skip] * docs/guide-ja/structure small fix [ci skip] * docs/guide-ja/structure-models.md revised [ci skip] * docs/guide-ja/structure-views.md reviewed [ci skip] * guide-ja/structure-modules.md guide-ja/structure-filters.md revised [ci skip] * guide-ja/structure-widgets.md updated [ci skip] * guide-ja/structure revised [ci skip] * guide-ja/structure-extensions.md revised [ci skip] * guide-ja/structure-extensions.md revised [ci skip] * guide-ja/intro adjusted line counts [ci skip] * guide-ja/start adjusted line counts [ci skip] * guide-ja/start line counts adjusted [ci skip] * guide-ja/structure-extensions.md typo fixed [ci skip] * guide-ja/structure line count adjusted [ci skip] * guide-ja/structure line count adjusted [ci skip]
This commit is contained in:

committed by
Dmitry Naumenko

parent
8a09075304
commit
009682ca04
@ -5,7 +5,8 @@
|
||||
例えば、アクセス・コントロール・フィルタはアクションの前に走って、アクションが特定のエンド・ユーザだけにアクセスを許可するものであることを保証します。
|
||||
また、コンテント圧縮フィルタはアクションの後に走って、レスポンスのコンテントをエンド・ユーザに送出する前に圧縮します。
|
||||
|
||||
一つのフィルタは、前フィルタ (アクションの *前* に適用されるフィルタのロジック) および/または 後フィルタ (アクションの *後* に適用されるロジック) から構成することが出来ます。
|
||||
一つのフィルタは、前フィルタ (アクションの *前* に適用されるフィルタのロジック) および/または
|
||||
後フィルタ (アクションの *後* に適用されるロジック) から構成することが出来ます。
|
||||
|
||||
|
||||
## フィルタを使用する <span id="using-filters"></span>
|
||||
@ -31,15 +32,19 @@ public function behaviors()
|
||||
```
|
||||
|
||||
デフォルトでは、コントローラ・クラスの中で宣言されたフィルタは、そのコントローラの *全て* のアクションに適用されます。
|
||||
しかし、[[yii\base\ActionFilter::only|only]] プロパティを構成することによって、フィルタがどのアクションに適用されるべきかを明示的に指定することも出来ます。
|
||||
しかし、[[yii\base\ActionFilter::only|only]] プロパティを構成することによって、
|
||||
フィルタがどのアクションに適用されるべきかを明示的に指定することも出来ます。
|
||||
上記の例では、 `HttpCache` フィルタは、`index` と `view` のアクションに対してのみ適用されています。
|
||||
また、[[yii\base\ActionFilter::except|except]] プロパティを構成して、いくつかのアクションをフィルタされないように除外することも可能です。
|
||||
|
||||
コントローラのほかに、[モジュール](structure-modules.md) または [アプリケーション](structure-applications.md) でもフィルタを宣言することが出来ます。
|
||||
そのようにした場合、[[yii\base\ActionFilter::only|only]] と [[yii\base\ActionFilter::except|except]] のプロパティを上で説明したように構成しない限り、そのフィルタは、モジュールまたはアプリケーションに属する *全て* のコントローラ・アクションに適用されます。
|
||||
コントローラのほかに、[モジュール](structure-modules.md) または [アプリケーション](structure-applications.md)
|
||||
でもフィルタを宣言することが出来ます。
|
||||
そのようにした場合、[[yii\base\ActionFilter::only|only]] と [[yii\base\ActionFilter::except|except]] のプロパティを上で説明したように構成しない限り、
|
||||
そのフィルタは、モジュールまたはアプリケーションに属する *全て* のコントローラ・アクションに適用されます。
|
||||
|
||||
> Note: モジュールやアプリケーションでフィルタを宣言する場合、[[yii\base\ActionFilter::only|only]] と [[yii\base\ActionFilter::except|except]] のプロパティでは、アクション ID ではなく、[ルート](structure-controllers.md#routes) を使わなければなりません。
|
||||
なぜなら、モジュールやアプリケーションのスコープでは、アクション ID だけでは完全にアクションを指定することが出来ないからです。
|
||||
> Note: モジュールやアプリケーションでフィルタを宣言する場合、[[yii\base\ActionFilter::only|only]] と [[yii\base\ActionFilter::except|except]] のプロパティでは、
|
||||
アクション ID ではなく、[ルート](structure-controllers.md#routes) を使わなければなりません。
|
||||
なぜなら、モジュールやアプリケーションのスコープでは、アクション ID だけでは完全にアクションを指定することが出来ないからです。
|
||||
|
||||
一つのアクションに複数のフィルタが構成されている場合、フィルタは下記で説明されている規則に従って適用されます。
|
||||
|
||||
@ -47,7 +52,8 @@ public function behaviors()
|
||||
- アプリケーションで宣言されたフィルタを `behaviors()` にリストされた順に適用する。
|
||||
- モジュールで宣言されたフィルタを `behaviors()` にリストされた順に適用する。
|
||||
- コントローラで宣言されたフィルタを `behaviors()` にリストされた順に適用する。
|
||||
- フィルタのどれかがアクションをキャンセルすると、そのフィルタの後のフィルタ (前フィルタと後フィルタの両方) は適用されない。
|
||||
- フィルタのどれかがアクションをキャンセルすると、
|
||||
そのフィルタの後のフィルタ (前フィルタと後フィルタの両方) は適用されない。
|
||||
* 前フィルタを通過したら、アクションを走らせる。
|
||||
* 後フィルタ
|
||||
- コントローラで宣言されたフィルタを `behaviors()` にリストされた逆順で適用する。
|
||||
@ -57,7 +63,8 @@ public function behaviors()
|
||||
|
||||
## フィルタを作成する <span id="creating-filters"></span>
|
||||
|
||||
新しいアクションフィルタを作成するためには、[[yii\base\ActionFilter]] を拡張して、[[yii\base\ActionFilter::beforeAction()|beforeAction()]] および/または [[yii\base\ActionFilter::afterAction()|afterAction()]] メソッドをオーバーライドします。
|
||||
新しいアクション・フィルタを作成するためには、[[yii\base\ActionFilter]] を拡張して、
|
||||
[[yii\base\ActionFilter::beforeAction()|beforeAction()]] および/または [[yii\base\ActionFilter::afterAction()|afterAction()]] メソッドをオーバーライドします。
|
||||
前者はアクションが走る前に実行され、後者は走った後に実行されます。
|
||||
[[yii\base\ActionFilter::beforeAction()|beforeAction()]] の返り値が、アクションが実行されるべきか否かを決定します。
|
||||
返り値が `false` である場合、このフィルタの後に続くフィルタはスキップされ、アクションは実行を中止されます。
|
||||
@ -99,11 +106,13 @@ Yii はよく使われる一連のフィルタを提供しており、それら
|
||||
### [[yii\filters\AccessControl|AccessControl]] <span id="access-control"></span>
|
||||
|
||||
AccessControl は、一組の [[yii\filters\AccessControl::rules|規則]] に基づいて、シンプルなアクセス・コントロールを提供するものです。
|
||||
具体的に言うと、アクションが実行される前に、AccessControl はリストされた規則を調べて、現在のコンテキスト変数 (例えば、ユーザの IP アドレスや、ユーザのログイン状態など) に最初に合致するものを見つけます。
|
||||
具体的に言うと、アクションが実行される前に、AccessControl はリストされた規則を調べて、
|
||||
現在のコンテキスト変数 (例えば、ユーザの IP アドレスや、ユーザのログイン状態など) に最初に合致するものを見つけます。
|
||||
そして、合致した規則によって、リクエストされたアクションの実行を許可するか拒否するかを決定します。
|
||||
合致する規則がなかった場合は、アクセスは拒否されます。
|
||||
|
||||
次の例は、認証されたユーザに対しては `create` と `update` のアクションへのアクセスを許可し、その他のすべてのユーザにはこれら二つのアクションに対するアクセスを拒否する仕方を示すものです。
|
||||
次の例は、認証されたユーザに対しては `create` と `update` のアクションへのアクセスを許可し、
|
||||
その他のすべてのユーザにはこれら二つのアクションに対するアクセスを拒否する仕方を示すものです。
|
||||
|
||||
```php
|
||||
use yii\filters\AccessControl;
|
||||
@ -138,7 +147,8 @@ public function behaviors()
|
||||
|
||||
次の例は、[[yii\filters\auth\HttpBasicAuth]] の使い方を示すもので、HTTP Basic 認証に基づくアクセス・トークンを使ってユーザを認証しています。
|
||||
これを動作させるためには、あなたの [[yii\web\User::identityClass|ユーザ・アイデンティティ・クラス]]
|
||||
が [[yii\web\IdentityInterface::findIdentityByAccessToken()|findIdentityByAccessToken()]] メソッドを実装していなければならないことに注意してください。
|
||||
が [[yii\web\IdentityInterface::findIdentityByAccessToken()|findIdentityByAccessToken()]]
|
||||
メソッドを実装していなければならないことに注意してください。
|
||||
|
||||
```php
|
||||
use yii\filters\auth\HttpBasicAuth;
|
||||
@ -162,7 +172,8 @@ public function behaviors()
|
||||
ContentNegotiator は、レスポンス形式のネゴシエーションとアプリケーション言語のネゴシエーションをサポートします。
|
||||
このフィルタは `GET` パラメータと `Accept` HTTP ヘッダを調べることによって、レスポンス形式 および/または 言語を決定しようとします。
|
||||
|
||||
次の例では、ContentNegotiator はレスポンス形式として JSON と XML をサポートし、(合衆国の)英語とドイツ語を言語としてサポートするように構成されています。
|
||||
次の例では、ContentNegotiator はレスポンス形式として JSON と XML をサポートし、
|
||||
(合衆国の)英語とドイツ語を言語としてサポートするように構成されています。
|
||||
|
||||
```php
|
||||
use yii\filters\ContentNegotiator;
|
||||
@ -186,9 +197,11 @@ public function behaviors()
|
||||
}
|
||||
```
|
||||
|
||||
レスポンス形式と言語は [アプリケーションのライフ・サイクル](structure-applications.md#application-lifecycle) のもっと早い段階で決定される必要があることがよくあります。
|
||||
レスポンス形式と言語は [アプリケーションのライフサイクル](structure-applications.md#application-lifecycle)
|
||||
のもっと早い段階で決定される必要があることがよくあります。
|
||||
このため、ContentNegotiator はフィルタの他に、[ブートストラップ・コンポーネント](structure-applications.md#bootstrap) としても使うことができるように設計されています。
|
||||
例えば、次のように、ContentNegotiator を [アプリケーションの構成情報](structure-applications.md#application-configurations) の中で構成することが出来ます。
|
||||
例えば、次のように、ContentNegotiator を [アプリケーションの構成情報](structure-applications.md#application-configurations)
|
||||
の中で構成することが出来ます。
|
||||
|
||||
```php
|
||||
use yii\filters\ContentNegotiator;
|
||||
@ -211,13 +224,15 @@ use yii\web\Response;
|
||||
];
|
||||
```
|
||||
|
||||
> Info: 望ましいコンテント・タイプと言語がリクエストから決定できない場合は、[[formats]] および [[languages]] に挙げられている最初の形式と言語が使用されます。
|
||||
> Info: 望ましいコンテント・タイプと言語がリクエストから決定できない場合は、
|
||||
[[formats]] および [[languages]] に挙げられている最初の形式と言語が使用されます。
|
||||
|
||||
|
||||
|
||||
### [[yii\filters\HttpCache|HttpCache]] <span id="http-cache"></span>
|
||||
|
||||
HttpCache は `Last-Modified` および `Etag` の HTTP ヘッダを利用して、クライアント・サイドのキャッシュを実装するものです。
|
||||
例えば、
|
||||
|
||||
```php
|
||||
use yii\filters\HttpCache;
|
||||
@ -309,10 +324,12 @@ public function behaviors()
|
||||
|
||||
クロス・オリジン・リソース共有 [CORS](https://developer.mozilla.org/ja/docs/HTTP_access_control) とは、ウェブ・ページにおいて、さまざまなリソース (例えば、フォントや JavaScript など) を、それを生成するドメイン以外のドメインからリクエストすることを可能にするメカニズムです。
|
||||
特に言えば、JavaScript の AJAX 呼出しが使用することが出来る XMLHttpRequest メカニズムです。
|
||||
このような「クロス・ドメイン」のリクエストは、このメカニズムに拠らなければ、同一生成元のセキュリティ・ポリシーによって、ウェブ・ブラウザから禁止されるはずのものです。
|
||||
このような「クロス・ドメイン」のリクエストは、このメカニズムに拠らなければ、
|
||||
同一生成元のセキュリティ・ポリシーによって、ウェブ・ブラウザから禁止されるはずのものです。
|
||||
CORS は、ブラウザとサーバが交信して、クロス・ドメインのリクエストを許可するか否かを決定する方法を定義するものです。
|
||||
|
||||
[[yii\filters\Cors|Cors フィルタ]] は、CORS ヘッダが常に送信されることを保証するために、Authentication / Authorization のフィルタよりも前に定義されなければなりません。
|
||||
[[yii\filters\Cors|Cors フィルタ]] は、CORS ヘッダが常に送信されることを保証するために、
|
||||
Authentication / Authorization のフィルタよりも前に定義されなければなりません。
|
||||
|
||||
```php
|
||||
use yii\filters\Cors;
|
||||
@ -328,18 +345,15 @@ public function behaviors()
|
||||
}
|
||||
```
|
||||
|
||||
あなたの API の [[yii\rest\ActiveController]] クラスに CORS フィルタを追加したい場合は、[REST コントローラ](rest-controllers.md#cors) のセクションも参照して下さい。
|
||||
あなたの API の [[yii\rest\ActiveController]] クラスに CORS フィルタを追加したい場合は、
|
||||
[REST コントローラ](rest-controllers.md#cors) のセクションも参照して下さい。
|
||||
|
||||
Cors のフィルタリングは [[yii\filters\Cors::$cors|$cors]] プロパティを使ってチューニングすることが出来ます。
|
||||
|
||||
* `cors['Origin']`: 許可される生成元を定義するのに使われる配列。
|
||||
`['*']` (すべて) または `['http://www.myserver.net'、'http://www.myotherserver.com']` などが設定可能。デフォルトは `['*']`。
|
||||
* `cors['Access-Control-Request-Method']`: 許可される HTTP 動詞の配列。
|
||||
たとえば、`['GET', 'OPTIONS', 'HEAD']`。デフォルトは `['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS']`。
|
||||
* `cors['Access-Control-Request-Headers']`: 許可されるヘッダの配列。
|
||||
全てのヘッダを意味する `['*']` または特定のヘッダを示す `['X-Request-With']` が設定可能。デフォルトは `['*']`。
|
||||
* `cors['Access-Control-Allow-Credentials']`: 現在のリクエストをクレデンシャルを使ってすることが出来るかどうかを定義。
|
||||
`true`、`false` または `null` (設定なし) が設定可能。デフォルトは `null`。
|
||||
* `cors['Origin']`: 許可される生成元を定義するのに使われる配列。`['*']` (すべて) または `['http://www.myserver.net'、'http://www.myotherserver.com']` などが設定可能。デフォルトは `['*']`。
|
||||
* `cors['Access-Control-Request-Method']`: 許可される HTTP 動詞の配列。たとえば、`['GET', 'OPTIONS', 'HEAD']`。デフォルトは `['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS']`。
|
||||
* `cors['Access-Control-Request-Headers']`: 許可されるヘッダの配列。全てのヘッダを意味する `['*']` または特定のヘッダを示す `['X-Request-With']` が設定可能。デフォルトは `['*']`。
|
||||
* `cors['Access-Control-Allow-Credentials']`: 現在のリクエストをクレデンシャルを使ってすることが出来るかどうかを定義。`true`、`false` または `null` (設定なし) が設定可能。デフォルトは `null`。
|
||||
* `cors['Access-Control-Max-Age']`: プリフライト・リクエストの寿命を定義。デフォルトは `86400`。
|
||||
|
||||
次の例は、生成元 `http://www.myserver.net` に対する `GET`、`HEAD` および `OPTIONS` のメソッドによる CORS を許可するものです。
|
||||
|
Reference in New Issue
Block a user