(编辑:jimmy 日期: 2024/11/19 浏览:2)
本文实例讲述了Yii核心验证器api。分享给大家供大家参考,具体如下:
核心验证器 Core Validators
前言
Yii 提供了一系列常用的核心 validators, 你可在
yii\validators namespace 中找到. 不用使用长的验证器类名, 你可以使用别名代替他们.
例如, 你可以使用别名 required 代替 yii\validators\RequiredValidator 类:
<"htmlcode"><"selected" 是 0 或 1, 不管数据类型 ['selected', 'boolean'], // 检查是否 "deleted" 是一个 boolean 类型, 只能是 true 或则 false ['deleted', 'boolean', 'trueValue' => true, 'falseValue' => false, 'strict' => true], ] "color: #ff0000">trueValue: 代表true时的值. 默认为 '1'.
falseValue: 代表 false 时的值. 默认为 '0'.
strict: 是否输入框中的值必须匹配 设置的 trueValue 和 falseValue. 默认为 false.注意: 因为数据提交通过HTML形式都是字符创, 一般你需要设置 strict 属性为 false.
2. captcha 验证码
<"color: #ff0000">caseSensitive: 是否验证码需要区分大小写. 默认为 false.
captchaAction: 默认的验证码的 CAPTCHA action 生成 CAPTCHA image的路径. 默认为 'site/captcha'.
skipOnEmpty: 输入为空的时候是否跳过验证. 默认false, 即 input 输入是必须的.3. compare 比较
<"password" 属性和 "password_repeat"是否相等 ['password', 'compare'], // 验证 age >= 30 ['age', 'compare', 'compareValue' => 30, 'operator' => '>='], ] "color: #ff0000">compareAttribute: 属性的名字即将会和谁比较.当验证器被用来验证一个属性的时候, 他会和属性名字相同 但带有后缀 _repeat的属性相比较. 例如, 如果要验证的属性名是 password, 那么默认对比的属性名就是 password_repeat 你可以指定你想要的值.
compareValue: 一个和输入值比较的常量值. 当 property 和 compareAttribute 属性被同时指定的时候, 这个值将优先.
operator: 比较的操作符. 默认是 ==, 即输入值和 compareAttribute 或 compareValue 值相等的时候才会成功.
支持下面这些操作符: ==、===、!=、!==、>、>=、<、<=。4. date 日期
<"color: #ff0000">format: 这个 date/time 是 http://php.net/manual/en/datetime.createfromformat.php 中声明的所有支持的格式如果这个值没有设置, 他会自动取值 Yii::$app->formatter->dateFormat.
timestampAttribute: 属性名用来存储转换将输入的日期或时间. 也可以是相同的属性名作为被验证过的. 如果是这种情况, 原始的值将会被时间戳重写. 你可以看看 "如何处理日期选择器 DatePicker" 用例子.
http://www.yiiframework.com/doc-2.0/widget-jui#datepicker-date-input如果输入的是可选的,你也可能要添加一个默认值滤波器除了日期验证,以确保空输入存储为NULL。否则你可能最终得到的日期像日期选择器的输入字段在0000-00-00 或 您的数据库1970-01-01.
<"htmlcode"><"age" 为 null 如果他是空的 ['age', 'default', 'value' => null], // 设置 "country" 为 "USA" 如果他是空的 ['country', 'default', 'value' => 'USA'], // 分配 "from" 和 "to" 分别加3天和6天, 如果他们是空的话 [['from', 'to'], 'default', 'value' => function ($model, $attribute) { return date('Y-m-d', strtotime($attribute === 'to' "color: #ff0000">value: 表单的默认值 函数原型如下,<"htmlcode"><"salary" 是一个 double 数字 ['salary', 'double'], ] "color: #ff0000">max: 数字上限,没设置不检查
min: 数字下线,没设置不检查7. email 邮箱验证
<"email"地址 ['email', 'email'], ] "color: #ff0000">allowName: 检查名字是否允许在邮箱中出现 (e.g. John Smith <john.smith@example.com>). 默认为 false.
checkDNS,是否检查电子邮件的域名是否存在,是否有任何一个A或MX记录。请注意,这可能检查由于临时DNS问题失败,即使电子邮件地址实际上是有效的。默认为false。
enableIDN,验证过程是否应考虑到IDN(国际化域名)。默认为false。需要注意的是,为了使用IDN验证您必须安装并启用国际PHP扩展,或异常将被抛出。8. exist 是否存在
<"a1" 这个好像默认就有啊 ['a1', 'exist'], // a1 存在,但它的值将使用A2来检查是否存在 ['a1', 'exist', 'targetAttribute' => 'a2'], // a1 和 a2 需要同时存在, 他们都将接收错误信息 [['a1', 'a2'], 'exist', 'targetAttribute' => ['a1', 'a2']], // a1 和 a2 需要同时存在, 只有 a1 将接收错误信息 ['a1', 'exist', 'targetAttribute' => ['a1', 'a2']], // a1 需要存在 通过检测a2 和 a3 (用 a1 的值) ['a1', 'exist', 'targetAttribute' => ['a2', 'a1' => 'a3']], // a1 需要存在. 如果 a1是一个数组, 那么每个元素都必须存在. ['a1', 'exist', 'allowArray' => true], ] "color: #ff0000">targetClass: 用来寻找输入值验证的 Active Record 类名. 如果未设置, 默认使用当前设置的模型类.
targetAttribute: 应该用于验证输入值的存在在targetClass的属性的名称。如果没有设置,将使用目前正在验证的属性的名称。可以使用阵列来验证多列的存在的同时。数组的值是将被用于验证存在的属性,而数组键是其值要验证的属性。如果键和值都是一样的,你可以指定值.
filter: additional filter to be applied to the DB query used to check the existence of the input value. This can be a string or an array representing the additional query condition (refer to yii\db\Query::where() on the format of query condition), or an anonymous function with the signature function ($query), where $query is the Query object that you can modify in the function.
allowArray: 是否允许输入的值是一个array.默认 false. 若果属性是 true 而且输入是一个 array, 那么熟这里的每一个元素都必须存在在指向的目标列里. 注意这个属性不能被设置成true 如果你设置验证多列通过设置 targetAttribute 为一个 array.9. file 文件验证
<"primaryImage" 上传的文件格式是 PNG, JPG 或者 GIF // the file size must be less than 1MB ['primaryImage', 'file', 'extensions' => ['png', 'jpg', 'gif'], 'maxSize' => 1024*1024], ] "color: #ff0000">extensions: 允许上传的文件类型列表.他可以是一个数组 或者是一个以逗号分割的字符串(如. "gif, jpg"). 扩展名不区分大小写,默认为 null, 意味着所有的文件扩展名是允许的.
mimeTypes: 允许上传的文件资源的媒体类型。他可以是一个数组 或者是一个以逗号或空格分割的字符串 (如. "image/jpeg, image/png"). 不区分大小写,默认为 null, 意味着所有的文件扩展名是允许的.
minSize: 上传文件的最小字节数 未设不做判断.
maxSize: 上传文件的最大字节数 未设不做判断.
maxFiles: 最大的上传文件数 默认为 1, 意味着只能上传单个文件对于单个文件上传框. 如果大于 1, 那么 input必须是一个 array 包含至多 maxFiles 数量的上传文件.
checkExtensionByMimeType: 是否检查文件的扩展名. 如果由MIME类型检查所产生的扩展不同于上传的文件扩展名,该文件将被认为是无效的。默认值为true,意思进行这样的检查。
FileValidator 和 yii\web\UploadedFile 一起使用. .文件上传请参考:http://www.yiiframework.com/doc-2.0/guide-input-file-upload.html
10. filter 过滤
<"username" 和 "email" 输入空格 跳过数组验证 [['username', 'email'], 'filter', 'filter' => 'trim', 'skipOnArray' => true], // 验证正常 "phone" 输入 ['phone', 'filter', 'filter' => function ($value) { // 验证正确性手机代码 return $value; }], ] "color: #ff0000">filter: 一个php回调函数定义一个filter. 他可能是一个全局函数的名字, 一个匿名函数等等. 函数的原型一定是<"color: #ff0000">skipOnArray: 当输入只是一个数组的时候是否跳过.默认是 false. 请注意,如果过滤器无法处理数组输入,您应该将此属性设置为true。否则,可能会发生一些PHP错误.小提示: 去空格直接用trim验证.
小提示: 部分封装可以直接使用系统函数如intval:
<"htmlcode"><"primaryImage" 是否是一个有效的图片 且大小合适 ['primaryImage', 'image', 'extensions' => 'png, jpg', 'minWidth' => 100, 'maxWidth' => 1000, 'minHeight' => 100, 'maxHeight' => 1000, ], ] "color: #ff0000">minWidth: 最小的宽度 不设无限制.
maxWidth: 最大的宽度 不设无限制.
minHeight: 最小的高度 不设无限制.
maxHeight: 最大的高度 不设无限制.12. in 在那一个数组里面的值
<"level" 是 1, 2 或 3 ['level', 'in', 'range' => [1, 2, 3]], ] "color: #ff0000">range: 给定范围值的列表.
strict: 输入值和给定值之间的比较结果是否应严格(的类型和值必须相同)。默认为false。
not: 验证结果是否应该被反转。默认为false。当此属性设置为true,验证检查,输入的值不能是给定列表的值中.
allowArray: 是否允许输入值是一个数组。如果这是真的,并输入值是一个数组,数组中的每个元素必须值的给定列表中找到,或验证会失败。13. integer 整型验证
<"age" 是一个整型值 ['age', 'integer'], ] "color: #ff0000">max: 上限 不设不检查.
min: 下限 不设不检查..14. match 正则匹配检查
<"username" 以字母开头,并且只包含文字字符 ['username', 'match', 'pattern' => '/^[a-z]\w*$/i'] ] "color: #ff0000">pattern: 输入值必须匹配的规则. 属性必须设置,否则将会抛出异常.
not: 是否反转验证结果. 默认 false.15. number 数字检查
<"salary" 是一个数字 ['salary', 'number'], ] "color: #ff0000">max: 上限 不设不检查.
min: 下限 不设不检查.16. required 是否为空检查
<"username" 和 "password" 不是空的 [['username', 'password'], 'required'], ] "color: #ff0000">requiredValue: 应该输入的值. 如果未设 意味着输入值 不应该为空.
strict: 验证一个值时是否应该检查数据类型. 默认false.当 requiredValue未设置时,如果这个属性是 true, 验证器会检查输入值不严格null;如果改属性false,验证器将使用一个松散的规则来确定一个值是空的或不. 当 requiredValue设置了,输入和requiredValue之间的比较也将检查数据类型,如果此属性为true。17. safe 标记输入是安全属性
<"description" 是一个 safe 的属性 ['description', 'safe'], ] "htmlcode"><"username"是一个 string 而且长度在 4 和 24 之间 ['username', 'string', 'length' => [4, 24]], ] "color: #ff0000">length: 指定待验证的字符串的长度. 可以指定以下形式:
一个整数: 字符串的精确长度;
单个数组元素: 输入的最小长度 (e.g. [8]). 必须超过或等于这个数
两个数组元素: 输入的最小长度和最大长度 (e.g. [8, 128]).
min: 输入字符串的最小长度 未设不限制.
max: 输入字符串的最大长度 未设不限制..
encoding: 输入字符串的编码 未设默认 UTF-8.19. trim 去空格
<"username" 和 "email" 两边的空格 [['username', 'email'], 'trim'], ] "htmlcode"><"_blank" href="http://www.yiiframework.com/doc-2.0/yii-db-query.html#where()-detail">http://www.yiiframework.com/doc-2.0/yii-db-query.html#where()-detail21. url 地址验证
<"website" 是一个有效的 URL. 前置 "http://" 到 "website" 属性 // 如果它不具有一个URI模式 ['website', 'url', 'defaultScheme' => 'http'], ] "color: #ff0000">validSchemes: 一个数组指定URI方案应被认为有效。默认为['HTTP','HTTPS'],意思是HTTP和HTTPS URL被认为是有效的。
defaultScheme: 默认URI方案要预先考虑到输入,如果它不具有方案的一部分。默认为null,意味着不修改输入值。
enableIDN:验证是否应考虑到IDN(国际化域名)。默认为false。需要注意的是,为了使用IDN验证您必须安装并启用国际PHP扩展,否则异常将会被抛出。更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?