2016年3月31日木曜日

【CakePHP】余計なヴァリデーションはしない(saveがなぜか失敗する場合)

CakePHPで開発中のシステムで、少し前まで問題なく動いていた新規データ登録フォームからのデータ登録ができなくなってしまっていた。

原因を検索したところ、以下のページがヒット:
cakePHPでsaveできない時

Model->save()の際にヴァリデーションが自動で行われる。
該当のモデルクラスのヴァリデーション設定に問題がないかどうかをチェック。

そういえば、複数のテーブルで同じ名前のフィールドがあったので、自作のModelクラスが共通で継承する抽象クラスにそのフィールド名のヴァリデーション設定を追加していた。
required を true にし、allowEmpty を false にしていたので、Model->save()の際のPOST送信値に該当の名前のデータがない場合ヴァリデーションエラーになってしまう。これが原因だった。新規登録が出来なくなっていた該当テーブルには継承した抽象クラスで設定したヴァリデーションに該当するフィールドがなかった。

教訓:ヴァリデーション設定は横着せずに。

0 件のコメント:

コメントを投稿