【CakePHP4入門】json形式でレスポンスする

CakePHP4でjson形式でレスポンスする方法

APIサーバを立てたりする際にレスポンス形式がjson形式にすることはよくあります。
今回はController側で簡単にjson形式をレスポンスする方法をまとめます。

まず、Controllerに次ののinitializeメソッドを追加します。

    public function initialize(): void
    {
        parent::initialize();
        $this->loadComponent('RequestHandler');
    }

そして同じくControllerに以下のメソッドを追加します。

    public function getSampleJson()
    {
        $this->loadModel('Samples'); //←Samplesというモデルを使ってsamplesテーブルのレコードを取得するとします。
        $samples = $this->Samples->find();
        $this->viewBuilder()->setClassName('Json');
        $this->set('samples', $samples);
        $this->set('_serialize', ['samples']);
    }

シンプルなjson形式であれば、ビューテンプレートを作成せずに、
これだけでjsonをレスポンスすることができます。