加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

Yii2框架数据验证操作实例详解

发布时间:2021-05-22 14:12:13 所属栏目:编程 来源:网络整理
导读:本篇章节讲解Yii2框架数据验证操作。供大家参考研究具体如下: 一、场景 什么情况下需要使用场景呢?当一个模型需要在不同情境中使用时,若不同情境下需要的数据表字段和数据验证规则有所不同,则需要定义多个场景来区分不同使用情境。例如,用户

(验证数组ids中的每个元素是否都是int类型数据) rule:定义验证每一个数组元素的验证规则。 allowMessageFromRule:是否使用rule中指定的多个验证规则报错信息,默认为true,若设置为false,则使用“message”参数值作为错误信息。

注:若输入值不是数组则会报错。

(5)exist:存在性。

'appmodelsCategory','targetAttribute' => 'id']

(cid的值是否在AR类对应的id属性中存在,使用场景:当前AR模型关联的数据表的cid字段和Category模型关联的数据表的id字段相关联,所以使用该验证规则验证cid字段的值能否在关联的另一个数据表中找到对应记录) targetClass:用于查找输入值的目标AR类。 targetAttribute:用于查找输入值的目标属性名称。 filter:检查属性值存在性需要进行数据库查询,该参数设置查询的过滤条件。可以设置为查询条件的字符串或数组,或者function($query)匿名函数。 allowArray:是否允许输入值为数组,默认为false。若设置为true,则数组的每个元素都必须在目标字段中存在。若把targetAttribute设置为多元素数组来验证被测值在多字段中的存在性时,该属性不能设置为true。

(6)unique:唯一性。

'appmodelsUser','message' => '{attribute}"{value}"已被注册!','on' => 'signup'] 除了没有allowArray属性,其他属性都和exist验证器一样。

(7)in:范围。

[0,1,2]]

range:范围值列表。 strict:是否使用严格模式(类型与值都要相同)。 not:是否对验证的结果取反,默认为false。 allowArray:是否接受输入数组,默认为false。

5. 文件验证器

(1)file:文件。

['png','jpg','gif'],'maxSize' => 1024*1024]

extensions:可接受上传的文件扩展名列表。 mimeTypes:可接受上传的MIME类型列表。 minSize:文件大小下限。 maxSize:文件大小上限。 maxFiles:上传文件个数上限,默认为1。设置为大于1时输入值必须为数组。 checkExtensionByMimeType:是否通过文件的MIME类型来判断文件扩展,默认为true。

(2)image:图片。

'png,ipg','minWidth' => 100,'minHeight' => 100]

该验证器继承自file验证器,并支持额外属性minWidth、maxWidth、minHeight、maxHeight来设置图片的最小、最大宽度和最小、最大高度。

四、其他验证器

1. 条件式验证:

function($model) {//只在country属性值为'USA'的时候state属性值才不能为空 return $model->country=='USA'; }]

注:若需要支持客户端验证,则要配置'whenClient'属性。

1. 自定义验证器:

(1)行内验证器:一种以模型方法或匿名函数的形式定义的验证器。

示例:

$attribute != $this->newpassword) { $this->addError($attribute,'确认密码和新密码不一致!'); } }]。

(当然这里也可以使用yii核心验证器'compare'来实现)

注:行内验证器不支持客户端验证。

(2)独立验证器:

独立验证器是继承自yiivalidatorsValidator或其子类的类,可以通过重写validateAttribute()方法来实现验证规则,若验证失败,可以调用yiibaseModel::addError()方法来保存错误信息到模型内。

独立验证器示例:

message = '确认密码和密码不一致!'; } //服务器端验证 public function validateAttribute($model,$attribute) { if($model->conpassword !== $model->password) { $model->addError($attribute,$this->message); } } //客户端验证 public function clientValidateAttribute($model,$attribute,$view) { $conpassword = json_encode($model->conpassword); $message = json_encode($this->message,JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); return <<

模型中使用示例:

最后要注意,验证规则申明的先后顺序对验证结果也是有影响的!

更多关于Yii相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《》

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读