15
15
- 支持基本的数组检查,数组的子级值检查
16
16
- 方便的获取错误信息,验证后的安全数据获取
17
17
- 已经内置了40多个常用的验证器[ 内置验证器] ( #built-in-validators )
18
- - 规则设置参考自 yii 的。 部分规则参考自 laravel
18
+ - 规则设置参考 yii. 部分规则参考自 laravel, Respect/Validation
19
19
- 新增了独立的过滤器 ` Inhere\Validate\Filter\Filtration ` 用于数据过滤
20
20
21
21
支持两种规则配置方式:
56
56
57
57
- 使用 composer 命令
58
58
59
- ``` bash
60
- composer require inhere/php-validate
61
- // composer require inhere/php-validate ^version // 指定版本
59
+ ``` php
60
+ composer require inhere/php-validate
61
+ // composer require inhere/php-validate ^2.2
62
62
```
63
63
64
64
- 使用 composer.json
@@ -97,14 +97,14 @@ class PageRequest extends Validation
97
97
{
98
98
return [
99
99
['tagId,title,userId,freeTime', 'required'],
100
- ['tagId', 'size', 'min'=>4, 'max'=>567], // 4<= tagId <=567
101
- ['title', 'min', 40],
100
+ ['tagId', 'size', 'min'=>4, 'max'=>567, 'filter' => 'int' ], // 4<= tagId <=567
101
+ ['title', 'min', 40, 'filter' => 'trim' ],
102
102
['freeTime', 'number'],
103
103
['tagId', 'number', 'when' => function($data) {
104
104
return isset($data['status']) && $data['status'] > 2;
105
105
}],
106
- ['userId', 'number', 'on' => 'scene1' ],
107
- ['username', 'string', 'on' => 'scene2' ],
106
+ ['userId', 'number', 'on' => 'scene1', 'filter' => 'int' ],
107
+ ['username', 'string', 'on' => 'scene2', 'filter' => 'trim' ],
108
108
['username', 'regexp' ,'/^[a-z]\w{2,12}$/'],
109
109
['title', 'customValidator', 'msg' => '{attr} error msg!' ], // 指定当前规则的消息
110
110
['status', function($status) { // 直接使用闭包验证
@@ -376,8 +376,7 @@ $v = Validation::make($_POST,[
376
376
{
377
377
return [
378
378
['title', 'required' ],
379
- ['tagId', 'number', 'when' => function($data)
380
- {
379
+ ['tagId', 'number', 'when' => function($data) {
381
380
return isset($data['status']) && $data['status'] > 2;
382
381
}],
383
382
];
@@ -514,6 +513,7 @@ public function isFail() // hasError() 的别名方法
514
513
public function fail() // hasError() 的别名方法
515
514
516
515
// 成功通过验证
516
+ public function ok()
517
517
public function passed()
518
518
public function isPassed() // passed() 的别名方法
519
519
```
@@ -597,17 +597,19 @@ public function get(string $key, $default = null)
597
597
598
598
过滤器 | 说明 | 示例
599
599
-------|-------------|------------
600
- ` int/integer ` | 过滤非法字符并转换为` int ` 类型 | ` ['userId', 'number', 'filter' => 'int'], `
600
+ ` abs ` | 返回绝对值 | ` ['field', 'int', 'filter' => 'abs'], `
601
+ ` int/integer ` | 过滤非法字符并转换为` int ` 类型 ** 支持数组** | ` ['userId', 'number', 'filter' => 'int'], `
601
602
` float ` | 过滤非法字符,保留` float ` 格式的数据 | ` ['price', 'float', 'filter' => 'float'], `
602
603
` string ` | 过滤非法字符并转换为` string ` 类型 | ` ['userId', 'number', 'filter' => 'string'], `
603
604
` trim ` | 去除首尾空白字符,支持数组。 | ` ['username', 'min', 4, 'filter' => 'trim'], `
605
+ ` nl2br ` | 转换 ` \n ` ` \r\n ` ` \r ` 为 ` <br/> ` | ` ['content', 'string', 'filter' => 'nl2br'], `
604
606
` lower/lowercase ` | 字符串转换为小写 | ` ['description', 'string', 'filter' => 'lowercase'], `
605
607
` upper/uppercase ` | 字符串转换为大写 | ` ['title', 'string', 'filter' => 'uppercase'], `
606
608
` snake/snakeCase ` | 字符串转换为蛇形风格 | ` ['title', 'string', 'filter' => 'snakeCase'], `
607
609
` camel/camelCase ` | 字符串转换为驼峰风格 | ` ['title', 'string', 'filter' => 'camelCase'], `
608
610
` timestamp/strToTime ` | 字符串日期转换时间戳 | ` ['pulishedAt', 'number', 'filter' => 'strToTime'], `
609
- ` abs ` | 返回绝对值 | ` ['field', 'int', 'filter' => 'abs'], `
610
611
` url ` | URL 过滤,移除所有不符合 URL 的字符 | ` ['field', 'url', 'filter' => 'url'], `
612
+ ` str2list/str2array ` | 字符串转数组 ` 'tag0,tag1' -> ['tag0', 'tag1'] ` | ` ['tags', 'strList', 'filter' => 'str2array'], `
611
613
` email ` | email 过滤,移除所有不符合 email 的字符 | ` ['field', 'email', 'filter' => 'email'], `
612
614
` encoded ` | 去除 URL 编码不需要的字符,与 ` urlencode() ` 函数很类似 | ` ['imgUrl', 'url', 'filter' => 'encoded'], `
613
615
` clearTags/stripTags ` | 相当于使用 ` strip_tags() ` | ` ['content', 'string', 'filter' => 'clearTags'], `
@@ -623,11 +625,11 @@ public function get(string $key, $default = null)
623
625
624
626
验证器 | 说明 | 规则示例
625
627
----------|-------------|------------
626
- ` int/integer ` | 验证是否是 int | ` ['userId', 'int'] `
627
- ` num/number ` | 验证是否是 number | ` ['userId', 'number'] `
628
+ ` int/integer ` | 验证是否是 int ** 支持范围检查 ** | ` ['userId', 'int'] ` ` ['userId', 'int', 'min'=>4, 'max'=>16 ]`
629
+ ` num/number ` | 验证是否是 number ** 支持范围检查 ** | ` ['userId', 'number'] ` ` ['userId', 'number', 'min'=>4, 'max'=>16 ]`
628
630
` bool/boolean ` | 验证是否是 bool | ` ['open', 'bool'] `
629
631
` float ` | 验证是否是 float | ` ['price', 'float'] `
630
- ` string ` | 验证是否是 string. 支持长度检查 | ` ['name', 'string'] ` , ` ['name', 'string', 'min'=>4, 'max'=>16] `
632
+ ` string ` | 验证是否是 string. ** 支持长度检查** | ` ['name', 'string'] ` , ` ['name', 'string', 'min'=>4, 'max'=>16] `
631
633
` url ` | 验证是否是 url | ` ['myUrl', 'url'] `
632
634
` email ` | 验证是否是 email | ` ['userEmail', 'email'] `
633
635
` alpha ` | 验证值是否仅包含字母字符 | ` ['name', 'alpha'] `
@@ -636,14 +638,18 @@ public function get(string $key, $default = null)
636
638
` isMap ` | 验证值是否是一个非自然数组 map (key - value 形式的) | ` ['goods', 'isMap'] `
637
639
` isList ` | 验证值是否是一个自然数组 list (key是从0自然增长的) | ` ['tags', 'isList'] `
638
640
` isArray ` | 验证是否是数组 | ` ['goods', 'isArray'] `
641
+ ` hasKey ` | 验证数组存在给定的key(s) | ` ['goods', 'hasKey', 'pear'] ` ` ['goods', 'hasKey', ['pear', 'banana']] `
639
642
` intList ` | 验证字段值是否是一个 int list | ` ['tagIds', 'intList'] `
640
643
` numList ` | 验证字段值是否是一个 number list | ` ['tagIds', 'numList'] `
641
644
` strList ` | 验证字段值是否是一个 string list | ` ['tags', 'strList'] `
642
645
` min ` | 最小边界值验证 | ` ['title', 'min', 40] `
643
646
` max ` | 最大边界值验证 | ` ['title', 'max', 40] `
644
647
` size/range/between ` | 验证大小范围, 可以支持验证 ` int ` , ` string ` , ` array ` 数据类型 | ` ['tagId', 'size', 'min'=>4, 'max'=>567] `
645
648
` length ` | 长度验证( 跟 ` size ` 差不多, 但只能验证 ` string ` , ` array ` 的长度 | ` ['username', 'length', 'min' => 5, 'max' => 20] `
646
- ` in/enum ` | 枚举验证 | ` ['status', 'in', [1,2,3] `
649
+ ` fixedSize/fixedLength ` | 固定的长度/大小 | ` ['field', 'fixedSize', 12] `
650
+ ` startWith ` | 值(` string/array ` )是以给定的字符串开始 | ` ['field', 'startWith', 'hell'] `
651
+ ` endWith ` | 值(` string/array ` )是以给定的字符串结尾 | ` ['field', 'endWith', 'world'] `
652
+ ` in/enum ` | 枚举验证 | ` ['status', 'in', [1,2,3]] `
647
653
` notIn ` | 枚举验证 | ` ['status', 'notIn', [4,5,6]] `
648
654
` mustBe ` | 必须是等于给定值 | ` ['status', 'mustBe', 1] `
649
655
` notBe ` | 不能等于给定值 | ` ['status', 'notBe', 0] `
@@ -663,12 +669,13 @@ public function get(string $key, $default = null)
663
669
` beforeOrEqualDate ` | 字段值必须是小于或等于给定日期的值 | ` ['publishedAt', 'beforeOrEqualDate', '2017-05-12'] `
664
670
` afterOrEqualDate ` | 字段值必须是大于或等于给定日期的值 | ` ['publishedAt', 'afterOrEqualDate', '2017-05-12'] `
665
671
` afterDate ` | 验证字段值必须是给定日期之前的值 | ` ['publishedAt', 'afterDate', '2017-05-12'] `
666
- ` json ` | 验证是否是json字符串 | ` ['goods', 'json'] `
672
+ ` json ` | 验证是否是json字符串(默认严格验证,必须以 ` { ` ` [ ` 开始) | ` ['goods', 'json'] ` ` ['somedata', 'json', false] ` - 非严格,普通字符串 ` eg 'test' ` 也会通过
667
673
` file ` | 验证是否是上传的文件 | ` ['upFile', 'file'] `
668
674
` image ` | 验证是否是上传的图片文件 | ` ['avatar', 'image'] ` , 限定后缀名 ` ['avatar', 'image', 'jpg,png'] `
669
675
` ip ` | 验证是否是 IP | ` ['ipAddr', 'ip'] `
670
676
` ipv4 ` | 验证是否是 IPv4 | ` ['ipAddr', 'ipv4'] `
671
677
` ipv6 ` | 验证是否是 IPv6 | ` ['ipAddr', 'ipv6'] `
678
+ ` macAddress ` | 验证是否是 mac Address | ` ['field', 'macAddress'] `
672
679
` md5 ` | 验证是否是 md5 格式的字符串 | ` ['passwd', 'md5'] `
673
680
` sha1 ` | 验证是否是 sha1 格式的字符串 | ` ['passwd', 'sha1'] `
674
681
` color ` | 验证是否是html color | ` ['backgroundColor', 'color'] `
0 commit comments