日付・時間のバリデーション

日付や時刻に関するバリデーションは以下のルールがビルトインされています。
- date 日付
- time 時刻
- datetime 日時
(m:「月」を数字表記 / M:「月」を英語表記)
date (=>年月日)
年月日をバリデーションする場合は、それぞれのフォーマットに合わせて'dmy'、'mdy'、'ymd'、'dMy'と'Mdy'を使い分けて下さい。
// 年月日 public $validate = array( 'birthday' => array( // 区切り文字が「ハイフン」「半角スペース」「ドット」「スラッシュ」のいずれか 'rule' => array( 'date', 'dmy'), // 'rule' => array( 'date', 'mdy'), // mm-dd-yy もしくは mm-dd-yyyy // 'rule' => array( 'date', 'ymd'), // yy-mm-dd もしくは yyyy-mm-dd // 区切り文字→「半角スペース」 // 'rule' => array( 'date', 'dMy'), // dd MM yy もしくは dd MM yyyy // 区切り文字→「半角スペース」カンマはオプション // 'rule' => array( 'date', 'Mdy'), // MM dd, yy もしくは MM dd, yyyy 'message' => 'dd-mm-yyyy もしくは dd-mm-yyyy', // 'allowEmpty' => true ), );
date (=>年月)
// 年月 public $validate = array( 'expiration' => array( // 区切り文字が「ハイフン」「半角スペース」「ドット」「スラッシュ」のいずれか 'rule' => array( 'date', 'my'), // mm-yy もしくは mm-yyyy // 'rule' => array( 'date', 'ym'), // yy-mm もしくは yyyy-mm // 区切り文字→「半角スペース」 // 'rule' => array( 'date', 'My'), // MM yy もしくは MM yyyy 'message' => 'mm-yy もしくは mm-yyyy', // 'allowEmpty' => true ), );
date (=>年)
年のみのバリデーション。(ただし、1900~2099の間)
// 年月 public $validate = array( 'expiration' => array( 'rule' => array( 'date', 'y'), // yyyy 'message' => 'yyyy(1900~2099)', // 'allowEmpty' => true ), );
time (=>時刻)
24時間表記もしくは、後ろにamもしくはpmを使用しての12時間表記をバリデーション。24時間表記の場合、時間は0埋めする必要があります。
24時間表記 => 01:12, 23:22 12時間表記 => 1:12 AM、01:12 PM、11:02 pm、10:32 am
datetime (=>日時)
年月日+時刻のバリデーション。年月日と時刻の間は「半角スペース」である必要があります。あとはそれぞれ前半部分の年月日をdateルールを使用して、後半部分の時刻をtimeルールを使用してバリデーションを行います。
// /lib/Cake/Utility/Validation.php public static function datetime($check, $dateFormat = 'ymd', $regex = null) { $valid = false; // 「半角スペース」区切りで配列に格納 $parts = explode(' ', $check); if (!empty($parts) && count($parts) > 1) { // 配列の最後尾を切り取り => 時間部分 $time = array_pop($parts); // 配列を「半角スペース」区切りで文字列に変換 => 日付部分 $date = implode(' ', $parts); // それぞれ日付をdateルール、時間をtimeルールでバリデーション $valid = self::date($date, $dateFormat, $regex) && self::time($time); } return $valid; }
関連記事
-
-
hasOne アソシエーション
hasOneアソシエーションはテーブル間で1つのレコードに対して他のテーブルに紐付くレコードが1つの場合にjoinする場合に使用します。 CakePHPのドキュメントにならってUserモデルとP
-
-
DebugKitを導入
定番のブログチュートリアルをこなして、定番のDebugKitを導入してみました。 2.3からはCakePHPインストール直後に以下のように導入を推奨するような警告メッセージが表示されるようになりまし
-
-
Js/Cssファイルの読み込みや出力する方法
CakePHPのHTMLヘルパーにはjsファイルやcssファイルを読み込むためのメソッドが用意されています。ファイルを読み込むのに加えて、出力先を複数指定できるようになっています。 また、インライン
-
-
ハッシュ関数の選択とハッシュ化処理
CakePHPでは、ログイン時にはpasswordを自動的にハッシュ化して認証を行ってくれますが、そのパスワードを登録する際は、明示的にハッシュ化する必要があります。 ハッシュ関数の選択 ハッ
-
-
Blowfishを使用してハッシュ化する
使用方法 Blowfishを採用してハッシュ化を行う場合、Securityクラスのhashメソッドを呼び出します。第2引数に'blowfish'を指定し、第3引数を指定しないもしくはfalseにしま
-
-
FullCalendarを使用してカレンダーアプリケーション
カレンダーアプリケーションを作成するため、カレンダー表示できるプラグインを探索して出会ったFullcalendarを試してみました。シンプルに使用できる上に、オプションがかなり豊富です。ダウンロード
-
-
独自のバリデーションルールを作成
CakePHPで組み込みバリデーションルールをつくる方法は、正規表現を定義する方法と独自メソッドを定義する方法の2つがあるようです。 参考 Custom Validation Rules 正規
-
-
CakePHP 2.x インストール
現在まで私が商用・非商用にリリースしているCakePHPアプリケーションは全て1.3.xベースで作成しています。 まだまだロードマップ的には大丈夫そうですが、お客さん向けに納品しているアプリケーショ
-
-
(メール・URL・電話・郵便・IP) データ バリデーション
今回は、プロフィール情報に使用されるデータに絞ったバリデーションルールです。 バリデーションルール 以下の5つのバリデーションルールがコアに用意されています。 email メールアドレス
-
-
checkボックスを実装
selectボックスに引き続いてcheckボックスの実装方法をおさらいしてみます。 コードは、CakePHP 2と1.3両方で実装可能です。デモ モデルは、こちらも以下 CREATE TA