Yii中validator验证器的safe过滤选项的含义

来源:互联网 发布:淘宝双十一规则 编辑:程序博客网 时间:2024/05/27 14:13

以前始终以为array('name','safe'),这个验证器的含义是,过滤name变量为安全的,比如addslashes之类的,但,这是错误的想法。


后来发现在gii中自动生成的验证器有时候带有safe 有时候不带有。


经过查看了英文文档和一些资料之后,终于明白,safe这个验证器是在用户输入的所有变量添加完验证器后,对那些还没有验证器的指定为safe。


因为Yii默认用户输入的每个变量都是不安全的,所以你需要指定剩下没经过验证器的变量为safe,这时$model->attributes = $_POST['form-data']才可以正常批量复制。



举个例子,用户提交的表单含有 name,gender,age


你的验证器是

array('age', 'integerOnly'=>true),

array('gender','in'=>array('男','女')),

但这样的话你漏掉了name进行验证,Yii认为这个数据你没有验证,所以它不能被批量复制。

于是你确定name用户不会恶意利用,便添加array('name','safe'),

ok,这样每个变量都经过了验证,于是可以顺利完成工作啦。


原创粉丝点击