ErrorController
とりあえずやり方はわかった.
でも,Viewについての理解が中途半端なのでうまく表示できない.
出来たらまとめる.
とりあえず
Zend_Controller_Plugin_ErrorHandlerの項を参考に,一番簡単な記述の↓を使います.
<? //index.php require_once 'Zend/Controller/Front.php'; require_once 'Zend/Controller/Plugin/ErrorHandler.php'; $front = Zend_Controller_Front::getInstance(); $front->registerPlugin(new Zend_Controller_Plugin_ErrorHandler()); Zend_Controller_Front::run('./application/controllers'); ?>
MVC での例外にある,__call(マジックメソッド?)を使ってもいいだけど,まだ理解してないのでパス(また今度勉強します).
ErrorControllerはサンプルを参考に
<? require_once 'Zend/Controller/Action.php'; class ErrorController extends Zend_Controller_Action { public function indexAction() { } public function errorAction() { $this->_helper->viewRenderer->setNoRender(); $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 エラー -- コントローラあるいはアクションが見つかりません $this->getResponse()->setRawHeader('HTTP/1.1 404 Not Found'); $content = "not found."; break; default: // アプリケーションのエラー $content = "error."; break; } // 前回の内容を消去します $this->getResponse()->clearBody(); $this->getResponse()->setBody($content); } } ?>
こんな感じに.わざわざviewのファイル作るほど内容がないので(1行しかない),レスポンスオブジェクトを使って出力してやります.
自動レンダリングをONにしてるとindex.phtmlやerror.phtmlを表示してしまうので「$this->_helper->viewRenderer->setNoRender();」を追加して自動レンダリングをOFFにします(これでこのアクションでだけOFFになる).
とりあずこれで.詳しくは追々勉強しよう.