【问题标题】:Yii validation except on save, real?Yii 验证除了保存,真的吗?
【发布时间】:2014-06-08 12:49:28
【问题描述】:

我有 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();
                        }

问题是,“除了”没有按预期忽略保存场景,因为我修改了 $_POST 数据,它没有通过它。数据保存没有这条规则,但是,不在 $error = CActiveForm::validate($model);

有人知道如何让它工作吗?或者也许有一些规则,比如'on'=>'validation'? 谢谢!

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

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

【问题讨论】:

    标签: php validation yii except


    【解决方案1】:

    您可能不会使用“保存”场景。

    默认方案是“插入”新记录或“更新”现有记录。

    所以该行应该是:

    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 中验证表单,它从顶部的控制器方法接收答案。我需要验证用户是否以 12:00 格式输入时间,当我保存时,我检查时间是否更改为日期时间格式,但是规则也会影响 $model-save(),除非必须从 $model->save() 中删除此规则。
    猜你喜欢
    • 1970-01-01
    • 2011-11-02
    • 2014-09-19
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    • 1970-01-01
    相关资源
    最近更新 更多