CakePHPのモデル機構には、
1.
ただ自作で何でもできるとはいってもすでに便利なルールはたくさんあります。まずはバリデーションの定義方法と、
バリデーション書式の簡単な説明と記述例
バリデーションルールは、
<?php
class User extends AppModel {
var $name = 'User';
var $validate = array(ここにルールを記述...)
}
基本となる書式は以下の通りです。
var $validate = array(
'対象カラム名' => array(
'rule' => 'ルール名 or 自作メソッド名',
'required' => true or false (必須かどうか), (オプション)
'allowEmpty' => true or false (空文字でもOKか), (オプション)
'message' => 'エラー時の文章', (オプション)
),
),
詳しい書式の説明用に、
<?php
class User extends AppModel {
var $name = 'User';
var $validate = array(
// ログイン名
'login' => array(
'rule1' => array( // 定義名「rule1」
'rule' => 'alphaNumeric', // 英数字限定
'required' => true, // 必須
'message' => 'Alphabets and numbers only', // エラー文
),
'rule2' => array( // 定義名「rule2」
'rule' => array('between', 5, 15), // 文字列の長さが5~15文字
'message' => 'Between 5 to 15 characters', // エラー文
),
),
// パスワード
'password' => array(
'rule' => array('minLength', '8'), // 文字列長が8文字(byte)以上必要
'message' => 'Mimimum 8 characters long',
),
// メールアドレス
'email' => 'email', // 妥当なメールアドレスの形式であること
// 生年月日
'born' => array(
'rule' => 'date', // 日付であること
'message' => 'Enter a valid date',
'allowEmpty' => true, // 空文字を許可する (日付でなくてもよい)
),
);
}
?>
定義を1つずつ解説していきます。
ログイン名
まずはログイン名の定義の数に注目してください。2つのルールが定義されています。ルールをAND条件で複数定義する場合は配列を入れ子にすることで表現できます。
定義名
ログイン名の1つ目の定義
ログイン名の二つ目の定義
パスワード
パスワードは最短文字列長が指定されています。なお、
メールアドレス
次にメールアドレスです。最初に説明した書式と違い、
生年月日
最後の生年月日の項目には、
組み込みのバリデーションルール一覧
組み込みのバリデーションルールは中々充実しています。クレジットカード番号や拡張子など多彩なルールがあり憶えきれないので、
alphaNumeric | 英数字 |
between | 文字数範囲 |
blank | 空文字かホワイトスペース |
boolean | true/ |
cc | クレジットカード番号 |
comparison | 数値比較 |
date | 日付 |
decimal | 少数数値 |
メールアドレス | |
equalTo | 文字列一致 |
extension | 拡張子 |
ip | IPv4アドレス |
isUnique | テーブル内ユニーク |
minLength | 最小文字列長 |
maxLength | 最大文字列長 |
money | 通貨記号付き金額 |
Multiple | 複数選択 |
inList | 文字列一致 |
numeric | 数値 |
notEmpty | 空でないか |
phone | 電話番号 |
postal | 郵便番号 |
range | 数値範囲 |
ssn | 社会保障番号 |
url | URL |
それぞれのルールの詳しい説明は組み込みのバリデーションルール
次回は
ところで文字列長のルールは、