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

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

发布时间:2021-05-19 18:54:41 所属栏目:编程 来源:网络整理
导读:本篇章节讲授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措施计划有所辅佐。

(编辑:湖南网)

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

热点阅读