ビルトインされたバリデーションルール

CakePHP標準で多くのバリデーションルールが搭載されています。

ソース:/cake/libs/validation.php


email / maxLength / minLength / time / numeric /

email (=>メールアドレス)

メールアドレスであることを検証

email($check, $deep = false, $regex = null)
$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)以下であるかどうかを検証

maxLength($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)以上であるかどうかを検証

minLength($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の間に半角スペースも可)のみ
**ただし、数値のみでもバリデートされるためあまり使えない。

time($check)

[php]
var $validate = array(
'starttime' => array(
'rule' => array('time'),
'message' => 'Start Time must be in time format.'
)
);
[/php]

numeric(=>数値)

数値であるかを検証。is_numericを使用しているため、小数・マイナスの数値も通します。

numeric($check)

[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を追加してください。

url($check, $strict = false)
$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(=>アルファベット・数字限定)

アルファベット・数字のみであることを検証

alphaNumeric(mixed $check)

[php]
var $validate = array(
'password' => array(
'rule' => 'alphaNumeric',
'message' => 'Password must only contain letters and numbers.'
)
);
[/php]

isUnique(=>重複データがない)

重複データがないことを検証

isUnique()

[php]
var $validate = array(
'username' => array(
'rule' => 'isUnique',
'message' => 'Usernames has already been in.'
)
);
[/php]

  • このエントリーをはてなブックマークに追加

関連記事

no image

recursive設定によるfind()性能改善

CakePHPでは、モデルにアソシエーションを設定している場合、recursive(=>joinする階層)はデフォルトで0に設定されています。「recursiveゼロ」の意味するところとは、「1跨ぎま

no image

Jsヘルパーを使用してAjax更新

更新処理でページ遷移を伴う場合、ページ全体をレスポンスするのに対して、Ajax処理ではページの一部のレスポンスが可能となるためサーバからの通信量を抑えることが可能となります。 Jsヘルパーを使用して

Cookieログイン

今回は、「keep me logged in」などログイン画面でよくみかけるクッキーログインの機能を使ってみます。 CakePHPには、Cookieコンポーネントがあります。(PHPのsetcook

メール送信(qdmail)

CakePHP(+qdmail)でメール送信する処理を実装しました。 準備 2つのライブラリ(.php)をダウンロードし、以下のように配置して下さい。 app/controllers/compo

no image

Debugkitをインストール

CakePHPのデバッグツールとしてはデファクトスタンダードといってもいいDebugkitをインストールしました。 ダウンロード CakePHP 1.3用 https://github.com

no image

ログローテーション

CakePHP1.3では標準ではログはタイプごとに出力されるだけで、定期的なローテーションを行ってくれません。放っておくとひたすら1つのファイルにアペンドされていきます。app/tmp/logs以下に

複数ファイルアップロード

CakePHPで複数ファイルのアップロードについて調べてみました。といっても普通のPHPのコードと同じではありますが、postするフィールド名に[]を付与して配列にします。 view

no image

シンプルに設置できる数字Captcha「MathCaptcha」

スパム防止などで利用されているCaptchaですが、数字版で使えるものがないか探してみました。 この「MathCapthca」は非常にシンプルに設置できるのはいいですが、やっぱりクエスチョンの部分は

no image

WYSIWYGエディタを実装

WYSIWYGエディタをCakePHPにいくつか試してみました。 CKEditor 実装 // head // View(~.ctp) 解凍してwebroot/jsフ

コントローラ内でバリデーション処理を呼び出す

通常、saveメソッドの際にバリデーション処理も自動で行われますが、save処理と切り離してバリデーションを行うこともできます。このときは、save時と若干異なる処理体系になります。 バリデーシ

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

    PAGE TOP ↑