Zend FrameworkでAjaxというかレスポンスのフォーマットを呼び分ける

| | コメント(0) | トラックバック(0)
普通にZend Frameworkを使っていて、非同期通信をしてXMLでデータを返却するとなると
・Controllerの自動レンダリングを止めて
・レスポンスヘッダをXML形式にする
という手順が必要。



 これをコンテキストスイッチというのを使うと、その手間が省けて、見た目もすっきりする。ZFではXMLとJSON形式のコンテキストがデフォルトで用意されている。

詳しくは、上記リンクを参照なんだけど、XML形式の場合の例を簡単に書くと

class HogeController extends Zend_Controller_Action {
    public function init(){
        $contextSwitch = $this->_helper->getHelper('contextSwitch');
        $contextSwitch->addActionContext('hoge', 'xml')->
        addActionContext('fuga', 'xml')->initContext();
    }

と、これでhogeActionとfugaActionがXML形式のレスポンスに対応する。
呼び出し側は、http://localhost/hoge/fuga?format=xmlという感じでXML形式のレスポンスを要求する。

そうするとデフォルトではfuga.xml.tpl(僕はsmarty使ってるから)がレンダリングされて返却される。
ということで、同じロジックを使いながら、レスポンスの形式を呼び方ひとつで変えらて便利なんです。まあ結局XMLならXMLの独自の返却データとかあるだろうから完全に同じロジックというわけにはいかないかもしれないけど、それでも、だいぶ便利。

個人的には、エラーが発生したときに(ErrorAcitionを用意していれば)error/error.xml.tplが返却されるところがナイス、と思った。



トラックバック(0)

このブログ記事を参照しているブログ一覧: Zend FrameworkでAjaxというかレスポンスのフォーマットを呼び分ける

このブログ記事に対するトラックバックURL: http://hirop0164.s326.xrea.com/mt/mt-tb.cgi/246

コメントする


画像の中に見える文字を入力してください。

このブログ記事について

このページは、ぴろしが2009年1月27日 10:32に書いたブログ記事です。

ひとつ前のブログ記事は「Google Analyticsで"/" と "/index.html"を同じページとしてカウントさせる」です。

次のブログ記事は「jQuery Star Rating設置のチュートリアル(似非)」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。