日付・時間のバリデーション
日付や時刻に関するバリデーションは以下のルールがビルトインされています。
- 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;
}
関連記事
-
-
radioボタンを実装
Radioボタンの実装は、セレクトボックスとほぼ同じです。 個人的にはラジオボタンをすすんで使用することは少ないのですが、2択くらいの選択肢であれば非常に便利ですよね。 今回は、その実装方法 デモ
-
-
Cookieログイン
今回は、ログイン画面でよくみかけるクッキーログインの機能を使ってみます。 CakePHPには、Cookieコンポーネントがあります。(PHPのsetcookieメソッドのラッパー)メソッドはwr
-
-
多言語サイト向けに翻訳ファイルを使って翻訳を行う
CakePHPには、翻訳をビヘイビアを使用する方法と翻訳ファイルを使用する方法の2つがあるそうです。(他にもあるのかな?) 今回は、翻訳ファイルを使用して言語の切り替えを行い、その言語設定をCook
-
-
CakePHP インストール時エラーの対処
CakePHPインストール時に出くわすであろうエラーの原因と対処方法についてまとめてみました。前提として、WebサーバはApache、データベースはMySQLとしています。 Timezone未設
-
-
数値系バリデーション
CakePHP 2になっていくつか数値用バリデーションルールが追加されています。 数値用 (コア)バリデーション decimal - 十進数であること numeric - 数値であること
-
-
バリデーションエラーメッセージの取得
CakePHP 2.xになってバリデーションエラー時に返却されるメッセージのデータ形式が変更になったようです。1.3系では、ひとつのフィールドに対して返却されるメッセージは一つのルールのみですが、2.
-
-
複数ファイルアップロードフォーム
CakePHP 2.0からはHTML5が標準でサポートとなり、複数ファイルアップロードのためのフォーム記述が容易になりました。 View (ビュー) 配列 Array (
-
-
Markdown Plugin
「Markdown CakePHP Plugin」は、MarkDown書式をレンダリングしてくれるビューヘルパーです。MarkDownについて勉強しているうちに出会ったので試し打ちです。 ダウンロー
-
-
ハッシュ関数の選択とハッシュ化処理
CakePHPでは、ログイン時にはpasswordを自動的にハッシュ化して認証を行ってくれますが、そのパスワードを登録する際は、明示的にハッシュ化する必要があります。 ハッシュ関数の選択 ハッ
-
-
selectボックスを実装
今まで、selectボックスのgroupを作成するのにSet::Combineを使用していましたが、意外と簡単にできることに気付いてしまったので、ご紹介。(自分だけ知らなかったことに気付いた と言った

