2012-03-28 28 views
0

嗨我試圖做我自己的形式驗證器就像在默認配置生成的LoginFormauthenticate方法。爲什麼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

你已經張貼作爲回答不正確的原因,你的代碼無法正常工作。你能展示你在視圖中做了什麼嗎?以及您正在驗證/保存的控制器操作? – 2012-03-28 04:07:28

回答

0

因爲不是所有的驗證映射到客戶端驗證。

除此之外,我已經創建了處理ajax表單驗證的代碼,並且在我的CActiveForm中啓用了ajaxValidation

所以現在所有的作品都很棒。我創建的驗證器正在通過ajax驗證。

+1

你並不是絕對需要一個客戶端驗證器來顯示錯誤消息,在你的代碼中還有一些其他的錯誤。 – 2012-03-28 04:21:15

-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. 我創建了我自己的驗證器類。 (在谷歌搜索「自定義驗證yii」)。