【CakePHP3】withParsedBody()で画面からPOSTされたデータを再現する

Bake-with-CakePHP Logo

たとえば1.入力画面→2.確認画面→3.保存完了画面というフローがあったとする。

1.から2.へはSessionでデータを引き継がせるようにしていたとして、

2.の入力内容から「修正する」ボタンを押してGetリクエストにて1.の入力画面へ戻ってきた時、引き継いだ入力情報をどうやって入力画面へ反映させるとスマートなのか?

で悩んだことがある。

 

その時に使ったのが、$this->requestでおなじみのServerRequestオブジェクトに用意されているwithParsedBody()メソッドだ。これ、結構使える関数なので紹介していく。検証したCakePHPのバージョンは3.6.13。

もっと見る

【CakePHP3】jsonデータをDBへ格納する際にbeforeMarshal()を活用してみた

Bake-with-CakePHP Logo

英語のmarshalは

  1. 《軍事》〔部隊を〕整列[集結]させる
  2. 〔考えや事実などを〕整理する、まとめる

という意味で使われる。CakePHP3のbeforeMarshal()は2.の解釈で、

「リクエストデータをEntity化させる前にデータをごにょごにょする」

という目的で、TableもしくはBehaviorクラスで使うことが可能だ。今回はそんなbeforeMarshal()を、jsonデータを取り扱いたい時に活用した事例を書く。検証したCakePHPのバージョンは3.6.13。

もっと見る