我爲我的項目使用Yii 1。我有一個表格中有5個字段,必須填寫。這沒有問題 - 模型中的一個簡單的驗證規則。然而,還有一個領域,這不是必需的。但是如果它被填滿了,其他5個領域必須變得不需要。我應該如何在模型中的rules()方法中定義這種驗證規則?Yii框架驗證規則
非常感謝您提前!
我爲我的項目使用Yii 1。我有一個表格中有5個字段,必須填寫。這沒有問題 - 模型中的一個簡單的驗證規則。然而,還有一個領域,這不是必需的。但是如果它被填滿了,其他5個領域必須變得不需要。我應該如何在模型中的rules()方法中定義這種驗證規則?Yii框架驗證規則
非常感謝您提前!
嘗試玩場景。驗證數據時,請檢查此字段是否已填寫,並使用特定方案創建新模型。
看here
你可以創建自己的自定義的驗證規則,那麼可以跳過情況下,你將需要:
指出:
$model->TRIGGERATTR = is the attribute that if informed is going to indicate that the other 5 are required
$model->ATTR1 = one of the five other attributes
$model->ATTR2 = two of the five other attributes
.
.
. and so on...
內聲明的規則您的模型如: array('ATTR1, ATTR2, ATTR3, ATTR4, ATTR5','{NameofRule}Validator'),
裏面你components/validators/general/{NameofRule}Validator
用下面的代碼創建一個自定義的驗證
class {NameofRule}Validator extends CValidator { public function validateAttribute($model, $attribute) { if((isset($model->TRIGGERATTR))&&(!is_null($model->TRIGGERATTR)) { if(!isset$model->$attribute||is_null($model->$attribute)) { $this->addError($model, $attribute, 'Is not Informed and it should be'); } } } }
不要忘了添加您的註釋和標記爲解決;-)
歡迎計算器如果你會發布你所說的規則,這將有所幫助。 – crafter 2015-02-11 05:47:14