ContentSwitch 輸出 JSON 範例

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應用了 , 很神吧 !!

發佈留言