CakePHP のバリデーションの注意点
どうやら、配列のキーが存在しない場合、バリデーションはスルーしてしまうみたい。
http://www.1x1.jp/blog/2007/04/cakephp_model_validates.html
これはCakePHPの仕様だと思うのだが、マニュアルには書いてなかったので、ちょっと焦った。
簡単な対処法は、キーが存在しなければ追加してやること。
<?php if (!isset($data['User']['address'])) { $data['User']['address'] = null; }
これで、チェックされるようになった。
追記(2/14)
もし「required」がtrueであれば、このフィールドはデータの配列中に存在しなければなりません。
(中略)・・・もし無ければ、バリデーションは失敗します。このキーのデフォルトはfalseです。
ありゃりゃ。required は明示的に true にしないといけない。そういうこと??