2013-01-23 35 views
1

我已經創建了一些實體(比如姓名,地址等)的表單。我已經在模型類中定義了驗證規則。客戶端驗證按要求完美工作。現在我需要創建自定義驗證規則。爲此,在參考http://www.yiiframework.com/wiki/168/create-your-own-validation-rule/#hh0時,我在我的模型中創建了一個名爲valid_number()的方法,並定義了一個簡單的空檢查(我知道內置了用於驗證null,email,密碼等的規則。這裏我已經演示了一個簡單的驗證方法,實際上我打算做一些自定義驗證)。請參閱下面的代碼。請讓我知道我做錯了什麼。如何在yii中爲驗證規則創建自定義函數?

//模型

class Employee extends CActiveRecord{ 
    public $number; 
    public function rules(){ 
    return array(
        array('number','valid_number'), 
       ); 
    } 


public function valid_number($attribute,$params){ 
    if($this->$attribute == ''){ 
     CModel::addError($attribute, 'Number is null'); 
    } 
    } 

//視圖

</fieldset> 
    <?php echo $form->textFieldRow($model, 'number'); ?> 
</fieldset> 
+0

有什麼錯誤?該模型驗證沒有任何錯誤,PHP錯誤發生? – darkheir

+0

那到底發生了什麼?你的方法是否被調用? 'var_dump($ this - > $ attribute)'輸出了什麼? – Jon

回答

3

CModel::addError應該是$this->addError

+0

我已經嘗試過了,但它對我沒有用。 – Pradeep

+1

'沒有工作'不**工作**,輸出是什麼?錯誤是什麼?你有什麼信息從調試嘗試? – Asgaroth

+0

@Pradeep您應該調用CFormModel :: error函數來顯示數字屬性錯誤。像這樣:'<?php echo $ form-> error($ model,'number'); ?>',如果只是驗證屬性是空的,你可以嘗試'required'驗證器 – Kai

0
<?php 
$this->addError($attribute, 'Your error message'); 
?> 
0

你爲什麼要調用靜態函數CModel::addError

只需調用該對象的adError和它的作品:

public function valid_number($attribute,$params){ 
    if($this->$attribute == ''){ 
     $this->addError($attribute, 'Number is null'); 
    } 
}