[CakePHP3.8]Hidden属性のパラメータがpatchEntityでEntityに反映されない

スポンサーリンク
CakePHP

HiddenでのPOSTデータの保存処理を書いていたのだが、どうも挙動がおかしいことがありいろいろいじってみた。

編集処理の場合、保存済みのデータとPOSTデータをpatchEntity()でマージする。
で、Hidden属性のデータで中身がNULLのものをマージしたら、Entityになぜか前のデータが残ってしまっていた。

バージョン
CakePHP 3.8

これは明らかにバグだと思う。
一応、ヴァリデーションは正しく判定できていた。(今回は入力必須)
ざっとそれらしきところしか追いかけてないが、そもそもpatchEntity()に渡すデータの中にhiddenかどうか判断できるデータがない。
じゃあ、patchEntityした後に、エンティティ―に手動でデータを上書きしてあげたのだが、そうするとヴァリデーション判定が消えてしまうようだった。
ということでお手上げ…。

ただ、ヴァリデーションは正しく判定できており、今回ヴァリデーションはNULL不許可なので、テンプレート側でエラーがあったらフォームのvalueを手動でNULLにして出力することで対応した。

[quads id=1]