cakebaker » Validation with CakePHP 1.2を適当に訳してみた。
1.2系のバリデーションの書き方
var $validate = array('field' => array('rule' => array('validationmethod', 'param1', 'param2')));
新しく追加されたvalidation method
alphaNumeric
アルファベットか半角数字のみ許す。
var $validate = array('username' => array('rule' => array('alphaNumeric')));
between
文字列長が指定範囲内か調べる。下記の例は3~10バイト。
var $validate = array('username' => array('rule' => array('between', 3, 10)));
blank
空欄かタブ、ホワイトスペースのみ許す。
var $validate = array('x' => array('rule' => array('blank')));
cc
クレジットカードナンバーとして正しいかを調べる。
var $validate = array('creditcard' => array('rule' => array('cc', array('visa'))));
comparison
numeric型の比較に使う。下記では年齢が18歳以上か調べている。
var $validate = array('age' => array('rule' => array('comparison', '>=', 18)));
or
var $validate = array('age' => array('rule' => array('comparison', 'greater or equal', 18)));
custom
正規表現を使ったバリデーションで使う。自分で定義した関数を使えるわけではない。
var $validate = array('username' => array('rule' => array('custom', '/^[0-9a-z]+$/i')));
date
正しいdateフォーマットかどうか調べる。詳しくはAPI yyyy-mm-ddフォーマットか調べたい場合は下記のようにする。
var $validate = array('startdate' => array('rule' => array('date', 'ymd')));
decimal
decimal(小数)型のチェックに使う。小数点以下2けたまで許す場合は下記のようにする。
var $validate = array('price' => array('rule' => array('decimal', 2)));
email
メールアドレスのチェックに使う。
var $validate = array('email' => array('rule' => array('email')));
money
実装が完了しているか不明。原著者が試してみた時点では使えなかった。
numeric
is_numericのラッパー。
var $validate = array('age' => array('rule' => array('numeric')));
phone
電話番号のチェックに使う。現在はUSのフォーマットのみ対応。それ以外は自分で正規表現を書く必要有り。
var $validate = array('phone' => array('rule' => array('phone', null, 'us')));
postal
郵便番号チェックに使う。現在はUS、カナダ、UKのフォーマットのみ対応。それ以外は自分で正規表現を書く必要有り。
var $validate = array('zipcode' => array('rule' => array('postal', null, 'us')));
ssn
社会保険番号のチェックに使う。現在はUS、オランダ、デンマークのフォーマットのみ対応。それ以外は自分で正規表現を書く必要有り。
var $validate = array('ssn' => array('rule' => array('ssn', null, 'us')));
url
URLのチェックに使う。
var $validate = array('website' => array('rule' => array('url')));
minLength and maxLength
文字列の最大または最小長の指定に使える。最低3バイトの長さが必要な場合は下記のようにする。
var $validate = array('username' => array('rule' => array('minLength', 3)));
最大20バイトの長さが必要な場合は下記のようにする。
var $validate = array('username' => array('rule' => array('maxLength', 20)));
ip
IPアドレスのチェックに使う。
var $validate = array('ip' => array('rule' => 'ip'));
equalTo, file, multiple, number, userDefinedについては原著者が試した時点では未実装みたい。
今は実装されてるかも。
追記:
ちなみに複数条件を指定する際はこんな風に書ける。
var $validate = array(
'name' => array(
'rule' => array('between', 3, 10),
'rule' => 'alphaNumeric', //パラメータがない場合は配列にしなくてもいい。
)
);
hetimaの日記 - CakePHP 1.1系に1.2系のバリデーションを組み込む
を参考にすれば自分で定義したバリデーション関数を使える。