PHPのRuby on Railsクローンのフレームワーク Akelos PHPをいじってみた出来事のメモ。

Akelosをいじってみるメモ帳

Akelos PHP Blogチュートリアル一覧(全18記事)
Akelos PHP ユーザ認証チュートリアル一覧(全19記事)

2008年09月02日

Akelosユーザ認証チュートリアル 4.Userモデルをちゃんと その2 validation

続いて、モデルに入るデータのルールを決めていきます。
validateの登場です。
validateは、入ってくるデータの内容を確認し、正当性をチェックして、ちゃんとデータが入るようにします。ただしく無いデータが来た場合のエラー処理もまとめてしてくれます。

C:\xampp\htdocs\projects\blog\app\models\user.php
を開いてください。

下記のようなコードを前回のUserメソッドの後ろに足します。
//入力内容のチェック
function validate()
{

//emailはユニークか?
$this->validatesUniquenessOf('email', array('notice'=>$this->t('email address registed!')));

//新しく作るときだけのチェック項目
if($this->isNewRecord()) {

//パスワードと、パスワード確認枠には入力があるか?
$this->validatesPresenceOf(array('passwd','passwd_confirmation'));

//チェックボックスの確認
$this->validatesInclusionOf('is_enable', array('1') ,$this->t('Please check checkbox of confirmation'));
}

//新しく作るとき または 修正時でかつパスワード修正がある場合のみのチェック
if($this->isNewRecord() || !empty($this->passwd))
{
//パスワードの長さチェック
$this->validatesLengthOf('passwd', array('in'=>array(5, 40), 'too_long' => $this->t('password too long.'), 'too_short' => $this->t('password too short')));

//パスワード確認の為の再入力枠とパスワードの内容が一致しているか
$this->validatesConfirmationOf('passwd', $this->t('not confirmation password'));

}

//emailとnameの空入力チェック
$this->validatesPresenceOf(array('email','name'));

//emailアドレスが有効なアドレスか?
$this->validatesFormatOf('email', AK_EMAIL_REGULAR_EXPRESSION, $this->t('error email address.')) ;


}

色々なvalidation用メソッドが登場しています。

コメントを見てある程度使い方がわかると思いますが、共通なのは 最初に調べたいカラム名を指定して、validationがエラーだった場合のメッセージ内容を$this->t('xxx')で指定するところですね。
なぜ、このようにメッセージを設定するかは別途書くとして、今はこういうもんだと思っておけば良いかと思います。ちなみにコード内では、xxxの部分は英語にしておいた方が良いです。日本語化は別なところでしますので、ここでは適当に。

わかりにくいのはvalidatesUniquenessOfとvalidatesConfirmationOfですかね。
validatesUniquenessOfは、いわゆる重複値チェックを一気にしてくれます。
DB内のemailフィールドで同じ値を持つデータが無いかを調べてくれます。便利です。
メールアドレスは個人毎にユニークに持つものなので、ここでチェックさせています。

validatesConfirmationOfは、指定した属性の名前と、その名前の後ろに"_confirmation"を足した名前の属性とで、一致をチェックするものです。
フォームの再入力値チェック用に使います。
ここでは、passwdを指定していますので、自動的に passwd_confirmation と比べる形になります。

posted by AMUAMU at 03:38| Comment(0) | TrackBack(0) | チュートリアル | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。