Yii条件验证器不工作


Yii ConditionalValidator Not Working

只有当另一个字段选择的值不等于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(...);
      }
   }
}