2014年5月13日火曜日

[CakePHP]Validationってそもそも配列にfieldの添字がないと発火しないんだね。

※CakePHP2.4.9のお話

何が言いたいかって、例えば以下のようなvalidationを設定している時。

public $validate = array(
  'user_id' =>array(
    'rule' => 'notEmpty',
    'message' => 'このフィールドは必ず入力してください。',
  ),
  ),
);


下記みたいにvalidation対象のuser_idが無い配列を保存しようとしたら、notEmptyが発生すると思ていたんだけど、発生せずに保存しちゃった。user_idにはDBでフォルトの0が入っていた。

array(
  'theme_id'=> '22'
)

要するに、validationするには対象のフィールドの添字が配列内に存在しないと発火しないのね。

※追記
色々実験してわかったけど、以下みたいに'required' => trueを入れると添字がない場合にvalidation errorを発生させてくれる。
public $validate = array(
  'user_id' =>array(
    'rule' => 'notEmpty',
    'message' => 'このフィールドは必ず入力してください。',
    'required' => true,
  ),
  ),
);


'required' => trueの不思議なのって、どのvalidationの種類にも入れられるので、例えばemailの形式を求めるvalidationに入れた場合、メッセージは「emailの形式で入れて下さい」みたいに出るんだよね。notEmptyだったらわりと自然なメッセージになるけど。


0 件のコメント:

コメントを投稿