mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-02 04:37:42 +08:00
merge from yiisoft/yii2
This commit is contained in:
@ -5,7 +5,8 @@ Yii が内蔵している [[yii\web\ErrorHandler|エラー・ハンドラ]] は
|
||||
具体的には、Yii のエラー・ハンドラはエラー処理をより良くするために、次のことを行います。
|
||||
|
||||
* 致命的でない全ての PHP エラー (警告や通知) は捕捉可能な例外に変換されます。
|
||||
* 例外および致命的 PHP エラーは、デバッグ・モードでは、詳細なコール・スタック情報とソース・コード行とともに表示されます。
|
||||
* 例外および致命的 PHP エラーは、デバッグ・モードでは、
|
||||
詳細なコール・スタック情報とソース・コード行とともに表示されます。
|
||||
* エラーを表示するために専用の [コントローラ・アクション](structure-controllers.md#actions) を使うことがサポートされています。
|
||||
* さまざまなエラー・レスポンス形式をサポートしています。
|
||||
|
||||
@ -46,8 +47,10 @@ try {
|
||||
// 実行を継続 ...
|
||||
```
|
||||
|
||||
リクエストが無効または予期しないものであることをユーザに知らせるエラー・ページを表示したい場合は、単に [[yii\web\NotFoundHttpException]] のような [[yii\web\HttpException|HTTP 例外]] を投げるだけで済ませることが出来ます。
|
||||
そうすれば、エラー・ハンドラがレスポンスの HTTP ステータス・コードを正しく設定し、適切なエラー・ビューを使ってエラー・メッセージを表示してくれます。
|
||||
リクエストが無効または予期しないものであることをユーザに知らせるエラー・ページを表示したい場合は、
|
||||
単に [[yii\web\NotFoundHttpException]] のような [[yii\web\HttpException|HTTP 例外]] を投げるだけで済ませることが出来ます。
|
||||
そうすれば、エラー・ハンドラがレスポンスの HTTP ステータス・コードを正しく設定し、
|
||||
適切なエラー・ビューを使ってエラー・メッセージを表示してくれます。
|
||||
|
||||
```php
|
||||
use yii\web\NotFoundHttpException;
|
||||
@ -59,11 +62,13 @@ throw new NotFoundHttpException();
|
||||
## エラー表示をカスタマイズする <span id="customizing-error-display"></span>
|
||||
|
||||
[[yii\web\ErrorHandler|エラー・ハンドラ]] は、定数 `YII_DEBUG` の値に従って、エラー表示を調整します。
|
||||
`YII_DEBUG` が `true` である (デバッグ・モードである) 場合は、エラー・ハンドラは、デバッグがより容易になるように、例外とともに、詳細なコール・スタック情報とソース・コード行を表示します。
|
||||
`YII_DEBUG` が `true` である (デバッグ・モードである) 場合は、エラー・ハンドラは、デバッグがより容易になるように、
|
||||
例外とともに、詳細なコール・スタック情報とソース・コード行を表示します。
|
||||
そして、`YII_DEBUG` が `false` のときは、アプリケーションに関する公開できない情報の開示を防ぐために、エラー・メッセージだけが表示されます。
|
||||
|
||||
> Info: 例外が [[yii\base\UserException]] の子孫である場合は、`YII_DEBUG` の値の如何にかかわらず、コール・スタックは表示されません。
|
||||
これは、この種の例外はユーザの誤操作によって引き起こされるものであり、開発者は何も修正する必要がないと考えられるからです。
|
||||
これは、この種の例外はユーザの誤操作によって引き起こされるものであり、
|
||||
開発者は何も修正する必要がないと考えられるからです。
|
||||
|
||||
デフォルトでは、[[yii\web\ErrorHandler|エラー・ハンドラ]] は二つの [ビュー](structure-views.md) を使ってエラーを表示します。
|
||||
|
||||
@ -71,13 +76,15 @@ throw new NotFoundHttpException();
|
||||
`YII_DEBUG` が `false` の場合、これが表示される唯一のビューとなります。
|
||||
* `@yii/views/errorHandler/exception.php`: エラーがコール・スタック情報と共に表示されるべき場合に使用されます。
|
||||
|
||||
エラー表示をカスタマイズするために、エラー・ハンドラの [[yii\web\ErrorHandler::errorView|errorView]] および [[yii\web\ErrorHandler::exceptionView|exceptionView]] プロパティを構成して、自分自身のビューを使用することが出来ます。
|
||||
エラー表示をカスタマイズするために、エラー・ハンドラの [[yii\web\ErrorHandler::errorView|errorView]] および [[yii\web\ErrorHandler::exceptionView|exceptionView]] プロパティを構成して、
|
||||
自分自身のビューを使用することが出来ます。
|
||||
|
||||
|
||||
### エラー・アクションを使う <span id="using-error-actions"></span>
|
||||
|
||||
エラー表示をカスタマイズするためのもっと良い方法は、専用のエラー [アクション](structure-controllers.md) を使うことです。
|
||||
そうするためには、まず、`errorHandler` コンポーネントの [[yii\web\ErrorHandler::errorAction|errorAction]] プロパティを次のように構成します。
|
||||
そうするためには、まず、`errorHandler` コンポーネントの [[yii\web\ErrorHandler::errorAction|errorAction]]
|
||||
プロパティを次のように構成します。
|
||||
|
||||
```php
|
||||
return [
|
||||
@ -90,7 +97,8 @@ return [
|
||||
```
|
||||
|
||||
[[yii\web\ErrorHandler::errorAction|errorAction]] プロパティは、アクションへの [ルート](structure-controllers.md#routes) を値として取ります。
|
||||
上記の構成は、エラーをコール・スタック情報なしで表示する必要がある場合は、`site/error` アクションが実行されるべきことを記述しています。
|
||||
上記の構成は、エラーをコール・スタック情報なしで表示する必要がある場合は、
|
||||
`site/error` アクションが実行されるべきことを記述しています。
|
||||
|
||||
`site/error` アクションは次のようにして作成することが出来ます。
|
||||
|
||||
@ -133,9 +141,11 @@ public function actionError()
|
||||
|
||||
* `name`: エラーの名前。
|
||||
* `message`: エラー・メッセージ。
|
||||
* `exception`: 例外オブジェクト。これを通じて、更に有用な情報、例えば、HTTP ステータス・コード、エラー・コード、エラー・コール・スタックなどにアクセスすることが出来ます。
|
||||
* `exception`: 例外オブジェクト。これを通じて、更に有用な情報、例えば、HTTP ステータス・コード、エラー・コード、
|
||||
エラー・コール・スタックなどにアクセスすることが出来ます。
|
||||
|
||||
> Info: あなたが [ベーシック・プロジェクト・テンプレート](start-installation.md) または [アドバンスト・プロジェクト・テンプレート](https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide-ja/README.md) を使っている場合は、エラー・アクションとエラー・ビューは、既にあなたのために定義されています。
|
||||
> Info: あなたが [ベーシック・プロジェクト・テンプレート](start-installation.md) または [アドバンスト・プロジェクト・テンプレート](https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide-ja/README.md) を使っている場合は、
|
||||
エラー・アクションとエラー・ビューは、既にあなたのために定義されています。
|
||||
|
||||
> Note: エラー・ハンドラの中でリダイレクトする必要がある場合は、次のようにしてください。
|
||||
>
|
||||
@ -148,8 +158,10 @@ public function actionError()
|
||||
### エラーのレスポンス形式をカスタマイズする <span id="error-format"></span>
|
||||
|
||||
エラー・ハンドラは、[レスポンス](runtime-responses.md) 形式の設定に従ってエラーを表示します。
|
||||
[[yii\web\Response::format|レスポンス形式]] が `html` である場合は、直前の項で説明したように、エラービューまたは例外ビューを使ってエラーを表示します。
|
||||
その他のレスポンス形式の場合は、エラー・ハンドラは例外の配列表現を [[yii\web\Response::data]] プロパティに代入し、次に `data` プロパティをレスポンス形式に応じて様々な形式に変換します。
|
||||
[[yii\web\Response::format|レスポンス形式]] が `html` である場合は、直前の項で説明したように、
|
||||
エラー・ビューまたは例外ビューを使ってエラーを表示します。
|
||||
その他のレスポンス形式の場合は、エラー・ハンドラは例外の配列表現を [[yii\web\Response::data]] プロパティに代入し、
|
||||
次に `data` プロパティを様々な形式に変換します。
|
||||
例えば、レスポンス形式が `json` である場合は、次のようなレスポンスになります。
|
||||
|
||||
```
|
||||
@ -167,7 +179,8 @@ Content-Type: application/json; charset=UTF-8
|
||||
}
|
||||
```
|
||||
|
||||
エラーのレスポンス形式をカスタマイズするために、アプリケーションの構成情報の中で、`response` コンポーネントの `beforeSend` イベントに反応するハンドラを構成することが出来ます。
|
||||
エラーのレスポンス形式をカスタマイズするために、アプリケーションの構成情報の中で、
|
||||
`response` コンポーネントの `beforeSend` イベントに反応するハンドラを構成することが出来ます。
|
||||
|
||||
```php
|
||||
return [
|
||||
|
||||
Reference in New Issue
Block a user