只有当另一个字段选择的值不等于11时,我才试图将一个字段设置为重用字段。我试过这个例子
array('role', 'ext.YiiConditionalValidator',
'if' => array(
array('role', 'compare', 'compareValue'=>"11"),
),
'then' => array(
array('company_id', 'required'),
),
),
),
我尝试下载新的ConditionalValidator。
甚至尝试了自定义条件:
public function checkEndDate($attributes,$params)
{
$this->addError('company_id','Error Message');
}
public function rules() {
return array(
array('company_id', 'checkEndDate')
);
}
但这一切都表明了错误。有什么简单的方法可以解决这个问题吗?。
为什么不使用场景?如果您使用"customer_type=active"创建/编辑模型,您可以先使用特殊场景创建它:
$model = new MyModel(MyModel::SCENARIO_ACTIVE);
然后定义你的规则,包括场景:
array('birthdate, city', 'required', 'on' => MyModel::SCENARIO_ACTIVE),
array('city', 'in', 'range' => array("sao_paulo", "sumare", "jacarezinho"), 'on' => MyModel::SCENARIO_ACTIVE)
如果您不喜欢这种方式,您可以非常简单地创建自己的验证器。
在规则中:
array('customer_type', 'myCustomValidator'),
在模型类中:
function myCustomValidator(){
if($this->customer_type == 'active'){
...
if($error){
$this->addError(...);
}
}
}