[Cakephp2]Cake plus の罠

Cake plus は大変便利なプラグインです。
フォームデータをhiddenで引き継ぐのは、いちいちhiddenメソッドを書かなくてはいけないため非常に面倒ですが、このプラグインを使うと
$this->FormHidden->hiddenVars(); と書くだけで勝手にhiddenを列記してくれます。
たとえばstep1画面でフォーム入力。step2でstep1画面でのフォームの内容をhidden引き継ぎつつ、新しい画面でデータをフォームに設定することができます。

しかし、step2でヴァリデーションなどに引っかかって再表示したとき、なんと1回目のpost時のデータがstep2のhiddenがセットされてしまうので、2回目以降のいくらフォームを書き直しても書き変わらなくなってしまいました。

結論
$this->FormHidden->hiddenVars();は$this->Form->create();の次の行に書きましょう。
hiddenVars()をformの最後に書くと、formで設定した値がhiddenで上書きされてしまうため、2回目以降の表示で変更ができなくなってしまいます。

タイトルとURLをコピーしました