我正在尝试将字段设置为仅在另一个字段选择值不等于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')
);
}
但这一切都表明错误。有什么简单的方法可以解决这个问题吗?
答案 0 :(得分:0)
为什么不使用场景?如果您使用' 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(...);
}
}
}