二匹の猫と日々の生活

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',」を追加する。
これで、新規登録の時だけその該当ルールを通ります。 逆に、「'on' => 'update',」とすれば更新の時だけ該当ルールを通るようになります。 こんな感じです。
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;
}

そんな訳で、かなり便利になりました。と思います。

このエントリーを含むはてなブックマーク | この記事をクリップ! | BuzzurlにブックマークBuzzurlにブックマーク

投稿者 wa : 14:48 | コメント (0)

2008年11月14日

万歩計

自宅で万歩計を発見したので、最近つけて生活してます。
デジタル万歩計ですが、Wiiとは連動しておりません。。。。

月 3,116歩
火 3,056歩
水 2,022歩
木 4,168歩

水曜はお仕事が忙しく、ほとんど机の前で過ごしていたので全然歩いてない。
木曜はバスに乗り遅れて遅刻しそうだったので、地下鉄の駅まで歩いた(走った)分多くカウントされてるっぽい。
bearamaちゃんも全然歩いてないって言ってたけど、デスクワークなので仕事が忙しくなればなるほど動かんよね。。
健康第一。目指せ、一日一万歩!(ムリ)

このエントリーを含むはてなブックマーク | この記事をクリップ! | BuzzurlにブックマークBuzzurlにブックマーク

投稿者 wa : 10:32 | コメント (0)

2008年11月05日

おでかけ

3連休はキッズプラザ大阪へ行ってきた。
子供向けの色々な施設やサービスがたくさんあったけど、ハル君には少しはやかったみたい。
科学フロアーにある、ゴルフボールをコロコロするやつ(?)と
水を汲み上げるポンプには興味を示しておりました。
ゴルフボールのやつは、子供達でボールの争奪戦でエライことになってましたが
ハル君は頑張ってボールを獲得しておりました。
競争社会でもやっていけそう。。

 

このエントリーを含むはてなブックマーク | この記事をクリップ! | BuzzurlにブックマークBuzzurlにブックマーク

投稿者 wa : 15:47 | コメント (2)

2008年10月31日

おうまさん

今月連休をつかって長野へ里帰りしました。
写真はチロルの森でのふれあい。

明日から3連休だー。どこいこうかな?

このエントリーを含むはてなブックマーク | この記事をクリップ! | BuzzurlにブックマークBuzzurlにブックマーク

投稿者 wa : 11:12 | コメント (0)

2008年10月24日

2歳

昨日でハルくんは2歳になりました!
家でも保育園でもよくお喋りしてます。

ハル君語録(間違いバージョン)
おりし → おしり
おつくり → お薬


実家にて(最近マイブームらしい変な顔)

このエントリーを含むはてなブックマーク | この記事をクリップ! | BuzzurlにブックマークBuzzurlにブックマーク

投稿者 wa : 10:38 | コメント (4)