Home > 全般 > Zend Frameworkのエラー処理

Zend Frameworkのエラー処理

intro
Zend Frameworkマニュアルに記述のあるエラー処理について紹介します(7.10.5.2節参照)。ソースコードはこちらからダウンロードできます。

1.コントローラの作成
以下のようにapplication/constorllers/ErrorController.phpファイルを作成します。

<?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ファイルを作成します。

<?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ファイルを作成します。

<!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>
 
<?=$this->translate($this->message)?>
 
</body>
</html>

3.確認
Webサーバにアクセスし(例:http://localhost/)、エラー画面を確認してください。Errorコントローラでログファイルを出力するようにした場合にはログファイルも確認してみてください。
履歴
日付 内容
2008/4/3 公開
2008/4/15 メッセージ内容変更(404エラー表示対応)

Comments:1

oplabo 08-04-15 (火) 12:55

404エラーメッセージが正しく表示されていなかったバグを修正しました。

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://www.oplabo.jp/article/9/trackback
Listed below are links to weblogs that reference
Zend Frameworkのエラー処理 from Open Programming Laboratory

Home > 全般 > Zend Frameworkのエラー処理

English
Search
Feeds

Return to page top