我在yii框架中使用gii代碼生成器創建了註冊表單。 Gii代碼生成器在fname,lname,email等字段中創建了所有驗證規則。 現在我試圖把我的自定義驗證規則放在所有字段中。所以我需要在yii框架的en-billet字段中禁用其他驗證規則。如何禁用yii框架的驗證規則
我該怎麼做。
我在yii框架中使用gii代碼生成器創建了註冊表單。 Gii代碼生成器在fname,lname,email等字段中創建了所有驗證規則。 現在我試圖把我的自定義驗證規則放在所有字段中。所以我需要在yii框架的en-billet字段中禁用其他驗證規則。如何禁用yii框架的驗證規則
我該怎麼做。
假設你在模型中有這樣的:
public function rules(){
return array(
array('firstName', 'length', 'max'=>20),
array('lastName', 'length', 'max'=>40),
);
}
這意味着驗證方法檢查的firstName
和lastName
長度,並檢查它們的長度不應大於20和40
如果您想從驗證中刪除此規則,則可以簡單地刪除該行,並將其中的自定義驗證規則放入其中。
還可以擴展類的CActiveRecord並覆蓋save()
方法,該方法接受屬性和設置$runValidation
到假。
這是一個需要overwrited中的CActiveRecord功能:
public function save($runValidation=true,$attributes=null)
{
if(!$runValidation || $this->validate($attributes))
return $this->getIsNewRecord() ? $this->insert($attributes) : $this->update($attributes);
else
return false;
}
你可以取消/刪除默認的規則,並與您的自定義規則替換它。
在模型中發佈你的規則方法,並告訴我們你想禁用哪個字段驗證 –
數組('firstName','length','max'=> 20), array('lastName', 'length','max'=> 40),我想禁用firstName和lasrName的驗證 – himanshu