カラムを通常使用では、notEmptyを使いたいが、編集時には、allowEmptyにしたいとする。
バリデーションルールを記述するとき、allowEmptyは先に書いたものが有効になるので、先に必須化のルール(allowEmpty => false)を書いて、後に空を許可するルール(allowEmpty => true)を書く。こうすると、項目は必須になるが、コントローラ内で、$validtor->remove()を使って、notEmptyを削除することで、動的に空を許可することができる。
先頭にnotEmptyを指定して、その次にallowEmpty、その後にそのほかのルールを書区必要がある。この順番にしないと、remove()を使用しても、項目が必ず必須化されてしまう。allowEmptyはルールセットの一番最初に書かないと有効にならない。2番目にallowEmptyが書いてあるとnotEmptyをremoveで削除したとき先頭になるので有効になる。
$validate = array(
'auth_img' => array(
'notEmpty' => array(
'allowEmpty' => false,
'message' => '画像を指定してください',
),
'allowEmpty' => array(
'allowEmpty' => true,
),
'maxSize' => array(
'rule' => array('attachmentMaxSize', 10485760),
'message' => '画像ファイルのサイズは10MB以内にして下さい'
),
'minSize' => array(
'rule' => array('attachmentMinSize', 1024),
'message' => '画像ファイルのサイズは1KB以上にして下さい'
),
),
);
UploadErrorルール
コアバリデーションに登録されているUploadErrorルールは、フォームのファイル選択ボックスを指定しないで、空のままポストすると、PHPのERR_NO_FILEエラーが必ず発生するので、アップロードエラーが必ず起きる。