数値系バリデーション
CakePHP 2になっていくつか数値用バリデーションルールが追加されています。
数値用 (コア)バリデーション
- decimal - 十進数であること
- numeric - 数値であること
- naturalNumber - 自然数(正の整数)であること
- range - 数値の範囲(超え・未満)であること
- comparison - 大・小・一致・不一致の比較に合致すること
5つともnotEmptyとなるので、必須としない場合は'allowEmpty' => trueを追加する必要があります。
decimal
十進数であることであることを検証します。
decimal(integer $check, integer $places = null, string $regex = null)
小数点以下の桁数を限定する場合は第2引数($places)で指定します。
第3引数で正規表現を指定した場合は、優先してそれを使用してバリデーションが行われます。
public $validate = array( 'height' => array( 'rule' => array( 'decimal', 2), // 小数点以下桁数を限定 'message' => '小数点以下2桁まで入力して下さい。', 'allowEmpty' => true // 空白許可 ), );
2.4.6 以降 localeconvから各国の「桁区切り文字」・「小数点(文字)」を取得し、それぞれ"空文字"、"カンマ"へ置換してバリデーションを行うようになりました。
numeric
数値であることを検証します。
numeric(string $check)
is_numericを使用して数値であることを検証します。なので、数値だけでなく16進数なども通ります。
public $validate = array( 'cars' => array( 'rule' => 'numeric', 'message' => 'Please supply the number of cars.', 'allowEmpty' => true // 空白許可 ) );
naturalNumber
自然数(正の整数)であることを検証します。 (2.2 以降)
naturalNumber(mixed $check, boolean $allowZero = false)
第2引数($allowZero)で0(ゼロ)を許可(true)するか否か(false)を設定できます。
public $validate = array( 'wheels' => array( 'rule' => 'naturalNumber', 'message' => 'Please supply the number of wheels.', 'allowEmpty' => true // 空白許可 ), 'airbags' => array( 'rule' => array( 'naturalNumber', true), // 0(ゼロ)を許可 'message' => 'Please supply the number of airbags.', 'allowEmpty' => true // 空白許可 ), );
range
数値が設定された範囲内であることを検証します。
range(string $check, integer $lower = null, integer $upper = null)
第2引数($lower)に最小値、第3引数($upper)に最大値を設定して下さい。
バリデーションは、$lower超え、$upper未満となり、$lower・$upperの場合はエラーとなります。
public $validate = array( 'number' => array( 'rule' => array( 'range', -1, 11), // マイナス1より大きく11より小さい 'message' => 'Please enter a number between 0 and 10', 'allowEmpty' => true // 空白許可 ) );
comparison
数値の大小の比較を行い検証を行います。
comparison(mixed $check1, string $operator = null, integer $check2 = null)
第2引数($operator)に比較方法を指定います。
'is greater' (~より大きい)、'is less' (~より小さい)、'greater or equal' (~以上)、'less or equal' (~以下)、'equal to' (~と等しい)、'not equal' (~と等しくない)
Models > Data Validation
関連記事
-
RSSフィードの取得
コンロトーラ public function getrssfeed() { try { $newsItems = $this->Rss->read( 'http://
-
HttpSocketを使用してリクエスト送信
CakePHPには、Webサービスへのリクエスト送信のためのHttpSocketクラスが用意されています。 HttpSocket get HTTP GETリクエストを発行します。デモ H
-
テーブルからランダムにデータを取り出す(find)
CakePHPでテーブルから特定件数のレコードをランダムに取得するには以下のように指定するとできます。 $this->data = $this->Bulkdata->find( 'all',
-
Markdown Plugin
「Markdown CakePHP Plugin」は、MarkDown書式をレンダリングしてくれるビューヘルパーです。MarkDownについて勉強しているうちに出会ったので試し打ちです。 ダウンロー
-
Jsヘルパーを使用してAjax更新
更新処理でページ遷移を伴う場合、ページ全体をレスポンスするのに対して、Ajax処理ではページの一部のレスポンスが可能となるためサーバからの通信量を抑えることが可能となります。デモ head
-
ネストしたリストを出力「nestedList」
DBやJSONからデータを取得して、そのデータをもとにメニュー表示などネストしたリストを出力させたい場合に「nestedList」が便利です。 ヘルパーに渡すデータは連想配列である必要があります。(
-
Syslogログエンジン
2.4から「Syslog」ログクラスが追加され、簡単にSyslogを使用できるようになりました。 CakePHP側の設定はbootstrap.php内のCakeLogコンフィグのengineを'Sy
-
Formヘルパーのinputタグのdiv/labelなどの設定
Formヘルパーのinputではデフォルトでは以下のようにdivで囲われて、labelが付与されて出力されます。 CSSのフレームワークなどであらかじめ決まったスタイルがある場合に便利に作られていま
-
バリデーションエラーメッセージの取得
CakePHP 2.xになってバリデーションエラー時に返却されるメッセージのデータ形式が変更になったようです。1.3系では、ひとつのフィールドに対して返却されるメッセージは一つのルールのみですが、2.
-
CSS/JSをひとまとめにして軽量化するプラグイン「Minify plugin for CakePHP」
「Minify plugin for CakePHP」は、インクルードするCSSもしくはJSファイルをひとまとめにしてキャッシュ化してくれるプラグインです。 導入 ダウンロード・解凍し
Comment
RT @kwski3: CakePHP 2.4 - 数値系バリデーション http://t.co/AoSZtaTQsx ブログ
数値系バリデーション #CakePHP #trick876 #validation
http://t.co/hx5joTxhtC