なぜか$this->Model->Saveがうまくいかないとき
かなりハマッタ。そしてこんなことに時間をかけてしまい、かなり悲しい。
フォーム→確認画面→完了画面の流れで、なぜかあるパターンだけDBにSaveできない現象が発生。とくにPOSTされたデータを見ても怪しいところはない。
確認画面では、下記のようにバリデーションを実行
$error = $this->validateErrors( $this->Model );
完了画面でも、同じようにバリデーションしてから、$this->Model->Saveしてました。
ただし、確認画面から完了画面へのPOSTデータの構造は、フォーム画面から確認画面へのものと異なるようにしてました。
そして、複数パターンのバリデーションチェックを行って、その後に、
$this->Model->Save
で保存したら、保存できないときがある。。。
結局、saveメソッド字にもバリデーションチェックをデフォルトで行っているのが原因で、Saveに失敗してました。
ということで、
$this->Siryo->save( $data, $validate=false )
というようにして、Saveメソッド字にはバリデーション実行しないようにして回避。もちろんSaveメソッドの手前でバリデーションチェックは独自にかけてます。