前置き
CakePHPでAjaxをしたかった。ついカッとなってやった。
参考にしたページ
公式ドキュメントどすなぁ
JSONとXMLビュー — CakePHP Cookbook 2.x ドキュメント
手順
- routes.phpに
Router::parseExtensions('json');
を記述- 既に書いてある場合は、引数を
('xml', 'json')
みたいな感じに追記すればオッケー
- 既に書いてある場合は、引数を
- Controllerに
public $components = array('RequestHandler');
を追記- 使用するコントローラーに書けばいいけど、全体に適用するならAppControllerでもいいね
- posts/index.json のように.jsonでリクエストを受けた時にJsonViewクラスを適用してくれる
- application/json でリクエストを受けた時も同様にJsonViewを適用してくれる(らしい)
- Actionに書くことは2つ
$this->set(compact('posts'));
または$this->set('posts', $posts);
で変数を渡す$this->set('_serialize', array('posts'));
で指定した変数をjson_encodeして出力- 2つめの_serializeを書かないと、普通にactionname.ctpのビューファイルを読みにいくので注意
感想
うーん、なんと簡単。ドキュメントにも書いてある通り複雑なことも出来るけど、これだけの記述でさっくり書けるのは魅力的。Ajax Lifeが捗りますな…