Yii验证,保存时除外,真实


Yii validation except on save, real?

我有ajax表单提交和一些验证规则:

array('go1, go2', 'type', 'type' => 'time', 'timeFormat' => 'hh:mm', 'except'=>'save'),
array('go1, go2', 'type', 'type' => 'datetime', 'datetimeFormat' => 'yyyy-MM-dd hh:mm:ss', 'on'=>'save'),

我的控制器:

if($model->save())
                        {
                            echo CJSON::encode(array(
                                  'status'=>'success'
                             ));
                            Yii::app()->end();
                        } else {
                            $error = CActiveForm::validate($model);
                            if($error!='[]')
                                echo $error;
                            Yii::app()->end();
                        }

问题是,"except"并没有像预期的那样忽略保存场景,因为我修改了$_POST数据,它没有经过它。数据在没有此规则的情况下保存,但没有在$error=CActiviteForm::validate($model)中验证;

有人知道如何让它发挥作用吗?或者可能存在一些规则,例如"on"=>"validation"?谢谢

更新:我已经用另一种方式完成了我的任务,$model->save(false),所以我只使用Yii-CActiveFrom::validation验证一次,但现在在$model-save()之前。然后,如果一切正常,我会检查控制器中的另一个条件,如果出现问题,我会返回带错误的JSON。

但主要问题仍然存在,第二条规则只适用于$model->save(),为什么除了=>save之外,它不仅适用于CActiveForm Validation,而且也适用于$model->save

您可能没有使用场景"save"。

默认情况下,新记录为"插入",现有记录为"更新"。

所以这条线应该是:

array('go1, go2',
    'type',
    'type' => 'time',
    'timeFormat' => 'hh:mm',
    'except'=>'insert, update'
),