intro
Zend Frameworkマニュアルに記述のあるエラー処理について紹介します(7.10.5.2節参照)。ソースコードはこちらからダウンロードできます。
1.コントローラの作成
以下のように
application/constorllers/ErrorController.php
ファイルを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<?php class ErrorController extends Zend_Controller_Action { public function errorAction() { $errors = $this->_getParam('error_handler'); switch ($errors->type) { case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER: case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION: // 404 error -- controller or action not found $this->getResponse()->setRawHeader('HTTP/1.1 404 Not Found'); $this->view->title = '404 Not Found'; $this->view->message = '該当するページは見つかりませんでした。'; break; default: // application error // log error //require_once 'Zend/Log.php'; //require_once 'Zend/Log/Writer/Stream.php'; //$stream = new Zend_Log_Writer_Stream('/path/to/logfile'); //$logger = new Zend_Log($stream); //$exception = $errors->exception; //$logger->err($exception->getMessage() // . "\n" . $exception->getTraceAsString()); $this->view->title = 'エラー'; $this->view->message = 'アプリケーションエラーが発生しました。'; break; } // Clear previous content $this->getResponse()->clearBody(); } } |
以下のようにapplication/constorllers/IndexController.php
ファイルを作成します。
1 2 3 4 5 6 7 8 9 10 11 |
<?php require_once 'Zend/Controller/Action.php'; require_once 'Zend/Exception.php'; class IndexController extends Zend_Controller_Action { public function indexAction() { throw new Zend_Exception('some error occured...'); } } |
2.ビューの作成
以下のように
application/views/scripts/error/error.phtml
ファイルを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title><?=$this->translate($this->title)?></title> </head> <body> <h1><?=$this->translate($this->title)?></h1> <p><?=$this->translate($this->message)?></p> </body> </html> |
3.確認
Webサーバにアクセスし(例:http://localhost/)、エラー画面を確認してください。Errorコントローラでログファイルを出力するようにした場合にはログファイルも確認してみてください。
履歴
日付 | 内容 |
---|---|
2008/4/3 | 公開 |
2008/4/15 | メッセージ内容変更(404エラー表示対応) |
404エラーメッセージが正しく表示されていなかったバグを修正しました。