数値系バリデーション

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' (~と等しくない)


Validationユーティリティ:/lib/Cake/Utility/Validation.php
Models > Data Validation
  • このエントリーをはてなブックマークに追加

関連記事

テーブルからランダムにデータを取り出す(find)

CakePHPでテーブルから特定件数のレコードをランダムに取得するには以下のように指定するとできます。 $this->data = $this->Bulkdata->find( 'all',

Blowfishを使用してハッシュ化する

使用方法 Blowfishを採用してハッシュ化を行う場合、Securityクラスのhashメソッドを呼び出します。第2引数に'blowfish'を指定し、第3引数を指定しないもしくはfalseにしま

ネストしたリストを出力「nestedList」

DBやJSONからデータを取得して、そのデータをもとにメニュー表示などネストしたリストを出力させたい場合に「nestedList」が便利です。 ヘルパーに渡すデータは連想配列である必要があります。(

Markdown Plugin

「Markdown CakePHP Plugin」は、MarkDown書式をレンダリングしてくれるビューヘルパーです。MarkDownについて勉強しているうちに出会ったので試し打ちです。 ダウンロー

checkボックスを実装

selectボックスに引き続いてcheckボックスの実装方法をおさらいしてみます。 コードは、CakePHP 2と1.3両方で実装可能です。デモ モデルは、こちらも以下 CREATE TA

アップロードファイルのバリデーションルール

CakePHP 2.2や2.3になってファイルアップロードに対するルールがコアバリデーションに追加されているようで、まとめてみました。 コアバリデーション 関連しそうなルールは以下の4つの

パス定数と変更方法やURLの取得

CakePHPは基本的にはディレクトリそのまま配置することで構築が可能ではありますが、設定パスを変更することでセキュリティに考慮した構成にすることや運用性をもたせたものにすることが可能になります。

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

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

FullCalendarを使用してカレンダーアプリケーション

カレンダーアプリケーションを作成するため、カレンダー表示できるプラグインを探索して出会ったFullcalendarを試してみました。シンプルに使用できる上に、オプションがかなり豊富です。ダウンロード

バリデーションエラーメッセージの取得

CakePHP 2.xになってバリデーションエラー時に返却されるメッセージのデータ形式が変更になったようです。1.3系では、ひとつのフィールドに対して返却されるメッセージは一つのルールのみですが、2.

Comment

Message

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

*

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

    PAGE TOP ↑