cakephp3 での json, xml 出力についてですが,まぁ,ドキュメント通りにすれば出力できますけど,メモ代わりに.
とりあえず,出力したい Controller の initialize() に
$this->loadComponent('RequestHandler');
を追記.全部の場合には AppController の initialize() に追加しておけばいいでしょう.
で,config/routes.php あたりに
Router::extensions(['json', 'xml']);
を追加.json, xml 両方指定する必要はなくって必要なものだけでオッケーですね.
あとは _serialize 変数に渡したい変数を記述すればいいです.
src/Controller/HogeController.php
public function index() {
$hoge = $this->find()->all();
$this->set('_serialize', ['hoge']);
}
な感じかな.すでに普通の記述があって,ぜーんぶ渡しちゃっていい場合には AppConfig に
public function beforeRender(Event $event)
{
if (!array_key_exists('_serialize', $this->viewVars) &&
in_array($this->response->type(), ['application/json', 'application/xml'])
) {
$this->set('_serialize', true);
}
}
を付け加えてもいいのかも.'_serialize' を true に設定すると全部の変数がわたりますね.あ,cakephp 3.1.0 以降のフィーチャーです.json, xml 判別のあたりは適当に書き換えてください.
_serialize を使わずに,普通に template の src/Template/Articles/json/index.ctp のファイル中で
foreach ($articles as &$$article) {
unset($article->generated_html);
}
echo json_encode(compact('articles'));
ってやっても良いみたい.
もっと詳しいことは...やっぱりマニュアルを見てください.日本語化はされてないみたいだけどね.:-)