ビルトインされたバリデーションルール
CakePHP標準で多くのバリデーションルールが搭載されています。
ソース:/cake/libs/validation.php
email / maxLength / minLength / time / numeric /
email (=>メールアドレス)
メールアドレスであることを検証
$deep:trueに設定した場合は、ホストの検索まで行う。(getmxrr, checkdnsrr, gethostbynamelの順で使用可能な関数を用いる。)
$regex:正規表現でドメインを指定するとドメイン制限(指定のドメインのメールアドレスのみ許可)が可能
[php]
var $validate = array(
'email' => array(
// emailアドレスかどうか
'rule' => 'email'
)
);
var $validate = array(
'email' => array(
// 入力アドレスのドメインの存在有無を確認する。
'rule' => array('email', true),
'message' => 'Please supply a valid email address.'
)
);
var $validate = array(
'email' => array(
// gmailのみ許可する。
'rule' => array('email', false, '\gmail.com\'),
'message' => 'Please supply a valid email address.'
)
);
[/php]
maxLength(=>最大文字数)
mb_strlenで対象フィールド($check)の文字数をカウントし、最大文字数($max)以下であるかどうかを検証
[php]
var $validate = array(
'title' => array(
'rule' => array('maxLength', 50),
'message' => 'Title must be no larger than 50 characters long.'
)
);
[/php]
minLength(=>最小文字数)
mb_strlenで対象フィールド($check)の文字数をカウントし、最小文字数($min)以上であるかどうかを検証
[php]
var $validate = array(
'title' => array(
'rule' => array('minLength', 8),
'message' => 'Title must be at least 8 characters long.'
)
);
[/php]
time(=>時間)
時間フォーマットであるかを検証。フォーマットはHH:MM(24時間表記)もしくは、HH:MMam/HH:MMpm (HH:MMとam/pmの間に半角スペースも可)のみ
**ただし、数値のみでもバリデートされるためあまり使えない。
[php]
var $validate = array(
'starttime' => array(
'rule' => array('time'),
'message' => 'Start Time must be in time format.'
)
);
[/php]
numeric(=>数値)
数値であるかを検証。is_numericを使用しているため、小数・マイナスの数値も通します。
[php]
var $validate = array(
'cars' => array(
'rule' => 'numeric',
'message' => 'Please supply the number of cars.'
)
);
[/php]
url(=>URL)
URLであるかを検証。http(s) / ftp(s) / file / news / gopherのほかIPアドレスなどもOK
ブランクを許可したい場合は、'allowEmpty' => trueを追加してください。
$strict:trueに設定した場合は、httpなどのプレフィックスが必須
[php]
// url
var $validate = array(
'website' => array(
'rule' => 'url',
'allowEmpty' => true,
'message' => 'Please supply the valid url.'
)
);
// strict => true
var $validate = array(
'website' => array(
'rule' => array( 'url', true),
'allowEmpty' => true,
'message' => 'Please supply the valid url.'
)
);
[/php]
alphaNumeric(=>アルファベット・数字限定)
アルファベット・数字のみであることを検証
[php]
var $validate = array(
'password' => array(
'rule' => 'alphaNumeric',
'message' => 'Password must only contain letters and numbers.'
)
);
[/php]
isUnique(=>重複データがない)
重複データがないことを検証
[php]
var $validate = array(
'username' => array(
'rule' => 'isUnique',
'message' => 'Usernames has already been in.'
)
);
[/php]
関連記事
-
メール送信(qdmail)
CakePHP(+qdmail)でメール送信する処理を実装しました。 準備 2つのライブラリ(.php)をダウンロードし、以下のように配置して下さい。 app/controllers/compo
-
ログインに追加の条件を付与する「userScope」
「ユーザ登録」の続きです。 ユーザ登録後、activate(statusを0に設定するを)せずに「仮登録」のままで、正しいusernameとpasswordでログインを試したところ認証に引っかかって
-
複数ファイルアップロード
CakePHPで複数ファイルのアップロードについて調べてみました。といっても普通のPHPのコードと同じではありますが、postするフィールド名に[]を付与して配列にします。 view
-
CakePHP 1.3 インストール
使い古されている手ではありますが、表題の件とレンタルサーバへの配置方法などにも使えますので参考にしていただけたらと思います。 まずはレンタルサーバでCakePHPを動作させる CakePHPア
-
recursive設定によるfind()性能改善
CakePHPでは、モデルにアソシエーションを設定している場合、recursive(=>joinする階層)はデフォルトで0に設定されています。「recursiveゼロ」の意味するところとは、「1跨ぎま
-
Sessionコンポーネント
ソース: /cake/libs/controller/components/session.php read read($name = null) セッションの情報を読み込みます。 $
-
ログローテーション
CakePHP1.3では標準ではログはタイプごとに出力されるだけで、定期的なローテーションを行ってくれません。放っておくとひたすら1つのファイルにアペンドされていきます。app/tmp/logs以下に
-
WYSIWYGエディタを実装
WYSIWYGエディタをCakePHPにいくつか試してみました。 CKEditor 実装 // head // View(~.ctp) 解凍してwebroot/jsフ
-
validateErrors と validationErrors
CakePHP試験中に気付いたことがあって、メモです。 $this->validateErrors自身バリデーション処理している 今まで、save時にバリデーションエラーメッセージををログに出力し
-
Cookieログイン
今回は、「keep me logged in」などログイン画面でよくみかけるクッキーログインの機能を使ってみます。 CakePHPには、Cookieコンポーネントがあります。(PHPのsetcook
- PREV
- Twenty Ten カスタマイズ
- NEXT
- 独自のバリデーションルール