| 4件目(121件中) |

1.2betaの独自関数でのバリデーション

固定リンク:#0000000085   投稿者:ZiSTA 日時:2008-04-04 14:02:57   コメント( 0

バリデーションを使用する方法には、定義済みのルール、正規表現、独自関数、指定オブジェクトのメソッド(userDefined)が使用できます。


userDefinedと独自関数の使い分けで多少誤解があるようなので解説を。


ルール名に'userDefined'は指定オブジェクトのメソッドを指定するための方法です。モデル内に独自関数を書く場合は、'userDefined'でなく独自関数の関数名を指定すれば良いです。


""
var $validate = array(
'username' =>array(

'rule' => array('myZistaRule','zista'),

'message' => 'zistaさんしか登録できません''));


function myZistaRule($data,$param){

if($data['username']==$param) return true;

return false;

}
""


モデル内に関数を書けば良いので親クラスであるAppModelに書いておけばどのモデルからも呼べる事になります。


注意点がひとつありまして、モデル内の独自関数の場合は引数の$dataに'フィールド名'=>'入力値'という配列が入っている事です。配列から入力値を取り出して検証する必要があります。


定義済みルールや'userDefined'の場合は配列ではなく$dataに入力値のみが入ります。フィールド名を渡したい時は、ルール名と一緒にフィールド名も指定する必要が有ります。


'userDefined'を使うのは自分のモデル以外のオブジェクトのメソッドを使いたい場合に限られると考えられます。それは自分以外のモデルかオリジナルの検証用オブジェクトか、、、

 

コメント

| 4件目(121件中) |
↑ ページトップ