Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Yii验证,保存时除外,真的吗?_Php_Validation_Yii_Except - Fatal编程技术网

Php Yii验证,保存时除外,真的吗?

Php Yii验证,保存时除外,真的吗?,php,validation,yii,except,Php,Validation,Yii,Except,我有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-&

我有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”并没有像预期的那样忽略保存场景,因为我修改了$\u POST数据,它没有经过它。数据保存时不使用此规则,但不在$error=CActiveForm::validate($model)中验证

有人知道怎么做吗?或者可能有一些规则,比如“on”=>“validation”? 谢谢

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


但主要问题仍然存在,第二条规则仅适用于$model->save(),那么为什么except=>save不仅适用于CActiveForm验证,还适用于$model->save?您可能不使用场景“save”

默认情况下,新记录为“插入”,现有记录为“更新”

因此,这条线应该是:

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

很抱歉,它不起作用,用这种方式CActiveForm::validate($model);也被忽略了…:(文档中说“except”应该是一个数组。你试过了吗?是的,如果我使用这个规则,即使在数组中,go1和go2也不会签入CActiveForm::validate($model),但我需要它不会签入model->save(),而签入validate($model)…请提供更多有关您正试图完成的内容的信息。由于您正在验证同一字段上的不同类型,验证规则对我来说没有多大意义。我从用户那里得到的时间是12:00格式的,这就是CActiveForm::validate所需的时间,稍后我将日期添加到了这一点,它看起来像2014-01-01 12:00:00,这是我的在$model->save中选中。重点是:我是ajax中的validate表单,它从顶部的控制器方法接收答案。我需要验证用户是否以12:00格式输入时间,当我保存时,我检查时间是否更改为datetime格式,但规则也影响$model-save(),当Exception必须从$model->save()中剪切此规则时。