ErrorHandler プラグインが想定しているのは、HTTP
404 型のエラー (ページが存在しない) と 500 型のエラー (内部エラー)
ということになります。
他のプラグインやルーティング時に発生したそれ以外の例外の処理は、想定していません。
ErrorController::errorAction()
に処理を転送します。これを変更するには、以下のようなアクセス用メソッドを使用します。
setErrorHandlerModule() は、
使用するコントローラモジュール名を設定します。
setErrorHandlerController() は、
使用するコントローラを設定します。
setErrorHandlerAction() は、
使用するコントローラアクションを設定します。
setErrorHandler() は連想配列を受け取ります。
この連想配列のキーには 'module'、'controller'
あるいは 'action' を指定することができ、
それぞれ対応する値を設定します。
setErrorHandler()
に渡されます。
postDispatch() フックとして登録され、
レスポンスオブジェクト
に格納された例外を確認します。もし何かの例外が見つかったら、
事前に登録されているエラーハンドラアクションに処理を転送します。
ErrorHandler プラグインが捕捉するのは、
アプリケーションのエラーだけではありません。
コントローラチェインが次のコントローラクラスやアクションメソッドを
見つけられなかった場合に、404 ハンドラとして動作させることもできます。
そのためには、エラーコントローラ内で例外の型を調べる必要があります。
$errors->type でその型を調べます。
これは、次のいずれかとなります。
error_handler オブジェクトのプロパティ
exception を使用します。
render() を複数回コールする場合などは、
レスポンスオブジェクト内にすでに内容が格納されていることがあります。
これをうまく処理しないと、本当に必要な内容と
それ以外の内容が混じってしまう恐れがあります。
そのページは存在しません。
EOH; break; default: // アプリケーションのエラー $content =<<予期せぬエラーが発生しました。後でもう一度お試しください。
EOH; break; } // 前回の内容を消去します $this->getResponse()->clearBody(); $this->view->content = $content; } } ]]>