cakephp2.doc_041
最終投稿日:2019年11月20日
【基本】
public $validate=array(
[フィールド名]=>array(
[任意の名前]=>array("rule"=>"条件"),
[任意の名前]=>array("rule"=>"条件"),
[任意の名前]=>array("rule"=>"条件")
),
[フィールド名]=>array(
)
);
・[rule]にバリデーションのルールを記述する。値は単一or配列です。
・[required]は論理値です。trueにするとレコードの保存の際、このフィールドがないとエラーとなります。
・[allowEmpty]false を割り当てたら、データがモデルの save() メソッドを通過するには、
フィールドが存在しその値が空で無いことが必要です。
true にセットした場合、空のフィールドは他に設定された
全てのバリデーションを無視します。
・[on]には"create"か"update"を割り当てます。"create"を設定すると、新規登録時しかチェックしません。
・[message]は、エラーメッセージを定義します。
<< ruleの種類 >>
notEmpty 内容が空ならエラー
url URLかチェック
numeric 数値かチェック
money 金額として有効かチェック
maxLength 長いとエラー
例)"rule"=>array("maxLength","10")
minLength 短いとエラー
isUnique フィールド値が他と重複したらエラー
extension ファイルの拡張子のチェック
例)"rule"=>array("extension"=>array("gif","jpg","png"))
email メルアドかチェック
comparison 数値を比較する
例)"rule"=>array("comparison",">=",18) 18以上でOK
between 数値の間かチェック
例)"rule"=>array("between",10,20) 10以上20以下
alphaNumeric 半角英数のみOK
※何故か「alphaNumeric」は全角も通るので以下の様にも設定できます。
"myalphaNumeric"=>array('rule' => array(
'custom', '/^[a-z\d]*$/i'),"message"=>"半角英数のみ使用可能です"),
※「numeric」に関しても、「16進数」や「+1」等も通るため以下の様にした方が良い
"myNumeric"=>array('rule' => array(
'custom','/^[0-9\d]*$/i'),"message"=>"半角数字のみ使用可能です")
【独自のバリデーションルール】
rule"=>"条件"の構文の"条件"とは、実はcakephpの内部関数名です。
なので、任意の名前にすればそれが独自の関数名となります。
例)カナ以外はNG
function myKana($data){
//どちらの記述でも値を取得できる
//echo current($data);
//どちらの記述でも値を取得できる
//echo $this->data["Test"]["kana"];
$val = current($data);
if(!preg_match("/^[ァ-ヶー]+$/u", $val)){
return false;
}
return true;
}
※独自関数へパラメータを渡すには
//ルールを更に配列にし、関数名の後の「25」が$dataに続くパラメータとなります
'rule' => array('limitDuplicates', 25),
//$param に 「25」が渡ります。
function limitDuplicates($data,$param) {