ここは以前の ethna.jp サイトを表示したものです。ここにあるドキュメントはバージョン2.6以降更新されません。
最新のドキュメントは 現在のethna.jp を閲覧してください。現ドキュメントが整備されるまでは、ここを閲覧してください。
Ethna > ドキュメント > 開発マニュアル > エラー処理 > エラーレベルに応じて共通の画面を表示させる

エラーレベルに応じて共通の画面を表示させる

Ethnaフレームワークでは,全てのエラーをコントローラのhandleErrorメソッドで処理しています. デフォルトでは,ログ出力とアラーとメール送信の処理がEthna_Controllerで定義されています.

       /**
        *      エラーハンドラ
        *
        *      エラー発生時の追加処理を行いたい場合はこのメソッドをオーバーライドする
        *      (アラートメール送信等−デフォルトではログ出力時にアラートメール
        *      が送信されるが、エラー発生時に別にアラートメールをここで送信
        *      させることも可能)
        *
        *      @access public
        *      @param  object  Ethna_Error             エラーオブジェクト
        */
       function handleError(&$error)
       {
               // ログ出力
               list ($log_level, $dummy) = $this->logger->errorLevelToLogLevel($error->getLevel());
               $message = $error->getMessage();
               $this->logger->log($log_level, sprintf("%s [ERROR CODE(%d)]", $message, $error->getCode()));
       }

エラー発生時にこれ以外の処理を行いたい場合,{アプリケーションID}_ControllerにhandleErrorを定義し,オーバーライドすることで,任意の処理を追加することが可能です.

例として,エラーレベルが'Error'の場合に「ただ今混雑しています」と表示させるには,app/{アプリケーションID}_Controller.phpに下記を追加します。

       /**
        *      エラーハンドラ
        *
        *      @access public
        *      @param  object  Ethna_Error             エラーオブジェクト
        */
       function handleError(&$error)
       {
               // ログ出力
               list ($log_level, $dummy) = $this->logger->errorLevelToLogLevel($error->getLevel());
               $message = $error->getMessage();
               $this->logger->log($log_level, sprintf("%s [ERROR CODE(%d)]", $message, $error->getCode()));
              
               //    
               //    template/ja/error.tpl に「ただ今混雑しています」
               //    と書いておく
               //
               $renderer = $this->getRenderer();
               $renderer->perform('error.tpl');
       }