2015-02-09 151 views
0

我爲我的項目使用Yii 1。我有一個表格中有5個字段,必須填寫。這沒有問題 - 模型中的一個簡單的驗證規則。然而,還有一個領域,這不是必需的。但是如果它被填滿了,其他5個領域必須變得不需要。我應該如何在模型中的rules()方法中定義這種驗證規則?Yii框架驗證規則

非常感謝您提前!

+0

歡迎計算器如果你會發布你所說的規則,這將有所幫助。 – crafter 2015-02-11 05:47:14

回答

0

嘗試玩場景。驗證數據時,請檢查此字段是否已填寫,並使用特定方案創建新模型。

here

0

你可以創建自己的自定義的驗證規則,那麼可以跳過情況下,你將需要:

指出:

$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... 
  1. 內聲明的規則您的模型如: array('ATTR1, ATTR2, ATTR3, ATTR4, ATTR5','{NameofRule}Validator'),

  2. 裏面你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'); } } } }

不要忘了添加您的註釋和標記爲解決;-)