項目の必須化をオンオフする方法

カラムを通常使用では、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エラーが必ず発生するので、アップロードエラーが必ず起きる。

タイトルとURLをコピーしました