あらかじめにサーバーリクエストに値をセットしておきたいケースもあるかと思います。
以下、Cake2の場合とCake4の場合、それぞれのサーバーリクエストに値をセットする方法です。
Cake2: リクエストに値をセット
// アクションメソッド内にて $this->request->data = $this->Model->getFuga($id);
Cake2ではリクエストデータを変数代入かのように扱えることが可能でした。
お手軽感はありますね。
Cake4: リクエストに値をセット
// アクションメソッド内にて $this->setRequest($this->getRequest()->withData('keyName', $value));
Cake4 では withData()
を利用し、引数にキーと値をセットして、それを setRequest()
する形になります。
これで、ビュー側で例えば、GETリクエスト(画面遷移時)などに $this->getRequest()->getData()
するとセットしたデータを取得することができます。
Cake4: 特定のカラムではなく、リクエストデータ自体をセットしたい場合
単一カラムではなく、すべてのリクエストデータを置き換える、またはセットしたい場合もあると思います。
そのような場合は、withParseBody()
を利用すればOKです。
$this->setRequest($this->getRequest()->withParsedBody($data));
■ Cakephp4: withData()
https://api.cakephp.org/4.4/class-Cake.Http.ServerRequest.html#withData()
■ Cakephp4: withParsedBody()
https://api.cakephp.org/4.4/class-Cake.Http.ServerRequest.html#withParsedBody()