Yii ConditionalValidator不工作

时间:2013-11-22 10:00:47

标签: php yii yii-extensions

我正在尝试将字段设置为仅在另一个字段选择值不等于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') 
     ); 
   }

但这一切都表明错误。有什么简单的方法可以解决这个问题吗?

1 个答案:

答案 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(...);
      }
   }
}