:のYiiカスタム検証ルール()自分のアプリケーションのためのユーザー登録は、以下の検証ルールを提出する前に呼び出され
public function rules()
{
return array(
array('email, firstName, lastName, password, passwordConfirm, telephone', 'required'),
array('club, email, firstName, lastName, level, password, telephone', 'length', 'max'=>45),
array('passwordConfirm', 'compare', 'compareAttribute'=>'password', 'on'=>'register'),
array('email', 'isUniqueEmailAddress'),
);
}
正常に完了したが、第四最初の3つの検証ルール(カスタム検証方法)はしません。それはisUniqueEmailAddress '関数を呼び出して、以下を実行する必要があります。あなたが見ることができるように、私も単純に検証エラーが登録フォームに送り返されることを保証するためにすべてのロジックをコメントアウトしまし
/*
* Returns true if there doesn't exist a user in the database with the submitted email
*/
public function isUniqueEmailAddress($attribute, $params)
{
//if (User::model()->find('email=:email', array(':email'=>$this->email)) !== null)
//{
$this->addError('email', 'Email account already exists');
//}
}
、ありませんvalidation()でエラーが返されます。私はYii's Documentationを読んでフォーラムを精査しましたが、なぜ自分のカスタム検証方法が呼び出されていないのか理解できません。
あなたは、モデル内のエラーをチェックするためには何を使用していますか? '$ model-> getErrors()'? モデルのシナリオは何ですか? カスタム 'beforeValidate()'メソッドがありますか?もしそうなら、あなたはそれに真実を戻していますか? 'CApplication :: end();'をその検証メソッドに入れて、実際に呼び出されているかどうか確認しましたか? – Ben