[cakephp]XMLを出力、配信する方法

POSTED: Aug 5, 2009, 7:09 pm
TAGS: ,

cakephp
cakephpでお手軽にxml配信。Flashの更新管理画面とかによく使う。

1.2でのRSS出力の仕組み(参考)

ControllerのComponentsにRequestHandlerを追加する。

var $components = array('RequestHandler');

route.phpに下記を追加する。

Router::parseExtensions();

するとrssやxmlのような拡張子に反応して、xml用のviewを見に行くようになる。
xml用のviewは[/app/view/コントローラ/xml/アクション.ctp]に用意する。
そしてレイアウトは[app/view/layout/xml/default.ctp]を下記な感じで用意。

e($xml->header());
echo $content_for_layout;

あとは、通常のviewと同じ感覚でxmlを作ると良いです。
もしxml階層を考えるのが面倒なら、

<entries>
echo $xml->serialize($data);
</entries>
 

こんな風にすると、一発でOKです。
あとはパース側で頑張るだけ!

最後に、[app_controller.php]に

function beforeFilter(){
	if($this->RequestHandler->isXml()){
		Configure::write('debug',0);
	}
}

こういう風にしてあげるとデバッグ時にsqlが出てこないので便利。