2012-03-28 30 views
0

こんにちは私はのauthenticateメソッドのような独自のフォームバリデーターをデフォルトのコンフィグレーションで生成しようとしています。なぜこのYiiバリデーターは機能しませんか?

public function rules() 
    { 
     return array(
       // username and password are required 
       array('mnemonic, target_reg, source_reg', 'required'), 
       // rememberMe needs to be a boolean 
       array('target_reg_indirection, source_reg_indirection', 'boolean'), 

       array('mnemonic','foo'), 

     ); 
    } 

、ここでバリ方法である:

public function foo($attribute,$params){ 
      $this->addError('mnemonic', 'there was an error, you foo!'); 
     }  

それはちょうど私のために動作しません...私はすべきではない - 作業毎回ルールを追加する方法に注目してください。私はちょうどそれを作りました。しかし私は私の見解ではエラーメッセージを見ることはありません。デフォルトのバリデーター(requiredフィールドをチェックするものなど)は機能します。

アイデア?

+0

回答として投稿した内容は、コードが正しく動作しない正しい理由ではありません。ビューで行ったことを表示できますか?あなたが確認/保存しているコントローラーの動作は? –

答えて

0

すべてのバリデーターがクライアント側バリデータにマップされていないためです。

さらに、私はajaxフォームの検証を処理するコードを作成しました。ajaxValidationCActiveFormに有効にしました。

だから今はすべて素晴らしいです。私が作成したバリデーターは、ajaxバリデーションによって動作しています。

+1

エラーメッセージを表示するためにクライアント側のバリデータは絶対に必要ありませんが、コードに間違いがあります。 –

-1

私は同じ問題を抱えていましたが、私の場合はajaxValidationを有効にするのではなく、 "安全な"バリデーターと他のものが混在していました。

ここで私は問題を解決するのに役立ついくつかの読書を投稿します。これが同じ問題で他の人を助けてくれることを願っています。

  1. 「安全な」バリデータについて少しお読みください。 (http://www.yiiframework.com/wiki/161/understanding-safe-validation-rules/
  2. 私はAjaxValidationとClientValidationの違いを理解しています。 (http://www.yiiframework.com/doc/api/1.1/CActiveForm
  3. 独自のバリデータークラスを作成しました。 (googleで "custom validation yii"を検索してください)。
関連する問題