2008年11月18日
CakePHP 1.2のバリデーションについてあれこれ
CakePHP 1.2のバリデーションがなかなか便利になっていたのでメモ。
たとえばこんな感じ
var $validate = array(
'userid' => array(
'notNull' => array(
'rule' => VALID_NOT_EMPTY,
'message' => "ユーザーIDを入力してください"
),
'length' => array(
'rule' => array('between', 4, 31),
'message' => "ユーザーIDは4文字以上31文字以下で入力してください"
),
);
こんな感じで複数のルールを指定できる。でも、上記の場合だと何も入力しなかった場合「ユーザーIDを入力してください」というメッセージを表示させたいが、実際は「ユーザーIDは4文字以上31文字以下で入力してください」というメッセージが表示されてしまう。
そんなときは、ルールに「'last' => true,」を追加する。
var $validate = array(
'userid' => array(
'notNull' => array(
'rule' => VALID_NOT_EMPTY,
'message' => "ユーザーIDを入力してください"
'last' => true,
),
'length' => array(
'rule' => array('between', 4, 31),
'message' => "ユーザーIDは4文字以上31文字以下で入力してください"
'last' => true,
),
);
これで、何も入力しなかった場合は「ユーザーIDを入力してください」というメッセージが表示されます。そんでもって、独自バリデーションルールも追加できる。
var $validate = array(
'userid' => array(
'notNull' => array(
'rule' => VALID_NOT_EMPTY,
'message' => "ユーザーIDを入力してください"
'last' => true,
),
'length' => array(
'rule' => array('between', 4, 31),
'message' => "ユーザーIDは4文字以上31文字以下で入力してください"
'last' => true,
),
'notDuplication' => array(
'rule' => array('isUseridExists', 'userid'),
'message' => "このユーザーIDは使用できません。"
'last' => true,
),
'char' => array(
'rule' => array('custom', '/^[A-Za-z0-9_]+$/i'),
'message' => "ユーザーIDに無効な文字列が含まれています。"
'last' => true,
),
);
function isUseridExists($data, $limit) {
$exist_count = $this->find('count', array('conditions' => $data, 'recursive' => -1));
return $exist_count < $limit;
}
ちなみに、重複チェックは新規登録するときだけでいんだけど・・・という時は、そんなときは、ルールに「'on' => 'create',」を追加する。
これで、新規登録の時だけその該当ルールを通ります。
var $validate = array(
'userid' => array(
'notNull' => array(
'rule' => VALID_NOT_EMPTY,
'message' => "ユーザーIDを入力してください"
'last' => true,
),
'length' => array(
'rule' => array('between', 4, 31),
'message' => "ユーザーIDは4文字以上31文字以下で入力してください"
'last' => true,
),
'notDuplication' => array(
'rule' => array('isUseridExists', 'userid'),
'message' => "このユーザーIDは使用できません。"
'last' => true,
'on' => 'create',
),
'char' => array(
'rule' => array('custom', '/^[A-Za-z0-9_]+$/i'),
'message' => "ユーザーIDに無効な文字列が含まれています。"
'last' => true,
),
);
function isUseridExists($data, $limit) {
$exist_count = $this->find('count', array('conditions' => $data, 'recursive' => -1));
return $exist_count < $limit;
}
そんな訳で、かなり便利になりました。と思います。
2008年11月14日
万歩計
自宅で万歩計を発見したので、最近つけて生活してます。
デジタル万歩計ですが、Wiiとは連動しておりません。。。。
月 3,116歩
火 3,056歩
水 2,022歩
木 4,168歩
水曜はお仕事が忙しく、ほとんど机の前で過ごしていたので全然歩いてない。
木曜はバスに乗り遅れて遅刻しそうだったので、地下鉄の駅まで歩いた(走った)分多くカウントされてるっぽい。
bearamaちゃんも全然歩いてないって言ってたけど、デスクワークなので仕事が忙しくなればなるほど動かんよね。。
健康第一。目指せ、一日一万歩!(ムリ)
2008年11月05日
おでかけ
3連休はキッズプラザ大阪へ行ってきた。
子供向けの色々な施設やサービスがたくさんあったけど、ハル君には少しはやかったみたい。
科学フロアーにある、ゴルフボールをコロコロするやつ(?)と
水を汲み上げるポンプには興味を示しておりました。
ゴルフボールのやつは、子供達でボールの争奪戦でエライことになってましたが
ハル君は頑張ってボールを獲得しておりました。
競争社会でもやっていけそう。。
2008年10月31日
おうまさん
今月連休をつかって長野へ里帰りしました。
写真はチロルの森でのふれあい。
明日から3連休だー。どこいこうかな?
2008年10月24日
2歳
昨日でハルくんは2歳になりました!
家でも保育園でもよくお喋りしてます。
ハル君語録(間違いバージョン)
おりし → おしり
おつくり → お薬
