0

こんにちは、私のアプリケーションモデルの1つのrules()メソッドに問題があります。

これがrules()です:

public function rules() 
{ 
  $newRules = array(
    array('password_verification', 'required'),
    array('password_verification', 'length', 'min'=>6, 'max'=>32),
    array('password', 'compare', 'compareAttribute'=>'password_verification'),
    array('username, email', 'length', 'min'=>3,'max'=>255),
    array('password', 'length','min'=>6, 'max'=>32),
    array('username, email', 'unique'),
    array('email', 'email'),
    array('valid_until_formated','compare', 
          'compareAttribute'=>'valid_from_formated','operator'=>'>'),
    array('id, type,username, password, password_verification, email, valid_from, valid_until, valid_until_formated, valid_from_formated, added_on, created_by','safe'),
  );
}

(コードの形式については申し訳ありません)。

そしてここに問題があります:

「valid_until_formated」が「valid_from_formated」より大きいかどうかをテストしたいと思います。

間違った値(valid_fromより大きいvali_until)でフォームを送信すると、エラーメッセージが表示され、firebugで表示されますが、値はデータベースに挿入されます。

しかし、たとえば、すでに使用されているユーザー名または6文字未満のパスワードを使用しようとすると、エラーが発生し、データベースに何も作成されませんか?

このルールが機能しない理由を誰かが知っていますか(エラーメッセージが表示された場合でも)?(これはvalid_until_formatedの形式です。例: "20121118")

私を読んでくれてありがとう、そして私のおおよその英語をお詫びします。

良い一日を過ごしてください :)

ミカエル

4

2 に答える 2

1

ご回答ありがとうございます。

実際、それは私がしたダンプの間違いでした。

validate()メソッドがsave()メソッドによって呼び出されたことを知りませんでした。実際、ユーザーを保存しようとしていて、CustomUserモデルのルールが実行されなかった理由がわかりませんでした--_-

テストは私のUser:rules()で行われ、私のCustomUser :: rules()は私のUser :: rules()を継承します...とにかく私はこの問題をそのように修正しました。

if(myCustomUser-> validate()){

myUser=新しいユーザー;

.....。

myUser-> save(false);

}

このように、CustomUserの検証ルールを使用してユーザーを作成できます。

ありがとう、良い一日を :)

于 2012-11-20T12:43:55.620 に答える
-1

値の比較が期待どおりに機能していないようです。

CCompareValidator.phpファイルごと:

case '>':
    if($value<=$compareValue)
    {
            $message=$this->message!==null?$this->message:Yii::t('yii','{attribute} must be greater than "{compareValue}".');
            $this->addError($object,$attribute,$message,array('{compareAttribute}'=>$compareTo,'{compareValue}'=>$compareValue));
    }
    break;

これが機能する方法に従って、比較が逆になっているように見えます。にフリップする'>'とどうなり'<'ますか?

于 2012-11-20T01:35:42.100 に答える