このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
|
apricot:app:error [2020/05/09 16:08] y2sunlight [集約例外コントローラ] |
apricot:app:error [2020/07/01 13:34] (現在) tanaka [集約例外コントローラ] |
||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | ====== Apricot | + | ====== Apricot |
| - | --- // | + | --- // |
| [[apricot: | [[apricot: | ||
| 行 11: | 行 11: | ||
| * [[apricot: | * [[apricot: | ||
| * [[apricot: | * [[apricot: | ||
| - | * [[apricot: | + | * Apricot エラー画面 |
| * [[apricot: | * [[apricot: | ||
| * [[apricot: | * [[apricot: | ||
| - | * [[apricot: | + | * [[apricot: |
| * [[apricot: | * [[apricot: | ||
| * [[apricot: | * [[apricot: | ||
| - | * [[apricot: | + | * [[apricot: |
| - | \\ | + | アプリのエラー画面を作ります。\\ |
| - | + | エラー画面は集約例外ハンドラー([[basic-library: | |
| - | アプリのエラー画面を作ります。エラー画面は集約例外ハンドラー([[basic-library: | + | |
| ---- | ---- | ||
| 行 52: | 行 51: | ||
| ===== 集約例外コントローラ ===== | ===== 集約例外コントローラ ===== | ||
| - | 集約例外ハンドラーから呼び出されるコントローラを集約例外コントローラと呼んでいます、以下にそのソースコードを示します。 | + | 集約例外ハンドラーから呼び出されるコントローラを集約例外コントローラと呼びます。whoops.setting.php |
| {{fa> | {{fa> | ||
| 行 86: | 行 85: | ||
| // エラー画面を表示する | // エラー画面を表示する | ||
| - | | + | render(' |
| } | } | ||
| } | } | ||
| </ | </ | ||
| - | * 記号なしリスト | + | * 例外の種類に応じて表示用のステータスコードを設定します。 |
| + | * CSRFエラーなどの TokenMismatchException( トークンエラー )は419( Page Expired )に設定 | ||
| + | * HttpException( ヘルパー関数 '' | ||
| + | * その他の例外は 500( Internal Server Error )に設定 | ||
| + | |||
| + | * ヘルパー関数 render() を呼び出してレスポンスをレンダリングしています | ||
| + | * **render(string $view=null, array $variables=[])** | ||
| + | - $view : テンプレート名\\ 上例では assets/ | ||
| + | - $variables : テンプレート変数の連想配列\\ 上例では $status_codeをテンプレートに渡しています。 | ||
| + | * commit()メソッドはレンダリングされたHTMLを確定してレスポンスを送信します | ||
| \\ | \\ | ||
| 行 106: | 行 114: | ||
| テンプレート error.exception は、error.layout から継承して作成します。 | テンプレート error.exception は、error.layout から継承して作成します。 | ||
| - | \\ | ||
| ==== error.layout ==== | ==== error.layout ==== | ||
| 行 179: | 行 186: | ||
| </ | </ | ||
| </ | </ | ||
| - | |||
| - | \\ | ||
| ==== error.exception ==== | ==== error.exception ==== | ||
| - | 以下に集約例外コントローラのrenderアクションでレンダリングしているHTMLテンプレート( error.exception )を示します。 | + | 以下に集約例外コントローラでレンダリングしているHTMLテンプレート( error.exception )を示します。 |
| {{fa> | {{fa> | ||
| 行 239: | 行 244: | ||
| ===== テスト実行 ===== | ===== テスト実行 ===== | ||
| - | > TODO: | + | |
| + | エラー画面を表示してみましょう。 | ||
| + | |||
| + | .envを以下のように修正してデバッグモードから本番モードに変更します。 | ||
| + | > デバッグモードの時は集約エラーハンドラーは実行されません(その代わりに Whoops提供のPrettyErrorHandlerのデバッグ画面が表示されます )。 | ||
| + | |||
| + | {{fa> | ||
| + | <code int .env> | ||
| + | ... | ||
| + | APP_DEBUG=false | ||
| + | ... | ||
| + | </ | ||
| + | |||
| + | ブラウザ上で以下のURLにアクセスしてみて下さい。 | ||
| + | |||
| + | < | ||
| + | http:// | ||
| + | </ | ||
| + | |||
| + | 次の画面が表示されます | ||
| + | [{{apricot: | ||
| + | |||
| + | \\ | ||
| + | |||
| + | テスト後は、.envを元に戻しておいて下さい。 | ||
| + | <code int .env> | ||
| + | ... | ||
| + | APP_DEBUG=true | ||
| + | ... | ||
| + | </ | ||
| + | |||
| + | \\ | ||