Zend Framework 的 Zend_Controller_Action 下有個 Helper contextSwitch , 這個 Helper 可以用來切換 view 不同的輸出格式 , 假設我們有個 Controller 習慣用這方式產生網頁
class FooController extends Zend_Controller_Action {
function barAction() {
$this->view->assign("message" , "Hello World !");
}
}
並且搭配一支 view script bar.phtml 內容如下
<body>
<?php echo $this->message; ?>
</body>
這個範例很簡單 , 就是產生很簡單的 Hello World 網頁 , 但若要將此範例改成以 Json 方式來輸出 , 只要使用 contextSwitch就可以不用大改程式了 原本的 FooController 可以改寫如下
class FooController extends Zend_Controller_Action { function init() { parent::init(); $this->_helper->contextSwitch ->addActionContext('bar' , 'json') ->initContext(); } function barAction() { $this->view->assign("message" , "Hello World !"); } }
這樣就可以讓 FooController俱備兩種格式的輸出 , 當我們要取得正常的網頁 , 那麼網址就打 http://x.y.z/foo/bar
若要取得 Json 的輸出 , 就輸入 http://x.y.z/foo/bar/format/json 或 http://x.y.z/foo/bar/?format=json
這樣是不是非常非常 Easy 的將原本的程式轉換成 AJAX應用了 , 很神吧 !!