• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

表单验证: PHP验证解决方案,一个让你的表单验证更为方便,快捷,安全的扩展,满足你 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

表单验证

开源软件地址:

https://gitee.com/we7coreteam/w7-engine-validate

开源软件介绍:

微擎表单验证

StatForks

LicensePHP Version SupportFOSSA StatusTestsDownload

中文 |English

介绍

一个让你的表单验证更为方便,快捷,安全的扩展,满足你的一切验证需求。

目录

安装

使用composer命令

composer require w7/engine-validate

完整文档查看完整文档

简单验证

支持简单定义一个验证器并进行验证:

try {    $data = Validate::make([        'user' => 'required|email',        'pass' => 'required|lengthBetween:6,16',    ], [        'user.required'      => '请输入用户名',        'user.email'         => '用户名格式错误',        'pass.required'      => '请输入密码',        'pass.lengthBetween' => '密码长度为6~16位',    ])->check($data);} catch (ValidateException $e) {    echo $e->getMessage();}

如果验证通过,则返回所有通过验证的值,如未通过,则抛出一个W7\Validate\Exception\ValidateException异常

验证器定义

为具体的验证场景或者数据表单定义验证器类,我们需要继承W7\Validate\Validate类,然后实例化后直接调用验证类的check方法即可完成验证,下面是一个例子:

我们定义一个LoginValidate验证器类用于登录的验证。

class LoginValidate extends Validate{    protected $rule = [        'user' => 'required|email',        'pass' => 'required|digits_between:6,16',    ];        protected $message = [        'user.required'       => '请输入用户名',        'user.email'          => '用户名格式错误',        'pass.required'       => '请输入密码',        'pass.digits_between' => '密码长度为6~16位',    ];}
类属性定义的错误消息,优先级要高于自定义规则中的默认回复,高于自定义规则方法返回的错误

数据验证

$data = [    'user' => '[email protected]',    'pass' => ''];$validate = new LoginValidate();$validate->check($data);

此时会抛出一个W7\Validate\Exception\ValidateException异常,message为请输入密码

$data = [    'user' => '[email protected]',    'pass' => '123456'];$validate = new LoginValidate();$data = $validate->check($data);

验证成功,并返回通过验证的值,返回的值为数组类型

验证数组

验证表单的输入为数组的字段也不难。你可以使用 「点」方法来验证数组中的属性。例如,如果传入的 HTTP 请求中包含search[keyword]字段, 可以如下验证:

protected $rule = [    'search.order'   => 'numeric|between:1,2',    'search.keyword' => 'chsAlphaNum',    'search.recycle' => 'boolean',];

你也可以验证数组中的每个元素。例如,要验证指定数组输入字段中的每一个 id 是唯一的,可以这么做:

protected $rule = [    'search.*.id' => 'numeric|unique:account'];

数组规则的错误消息的定义也一样

protected $message = [    'search.order.numeric'       => '排序参数错误',    'search.order.between'       => '排序参数错误',    'search.keyword.chsAlphaNum' => '关键词只能包含中文,字母,数字',    'search.recycle.boolean'     => '参数错误:recycle',];

验证器类属性

$rule

用户定义验证器的验证规则,也可以通过setRules方法来进行设置,此方法为叠加,如果参数为null则为清空全部规则

// 类中定义protected $rule = [    'user' => 'required'];// 使用方法定义$v->setRules([    'user' => 'required']);

$message

用户定义验证器的错误信息,也可以通过setMessages方法来进行设置,此方法为叠加,如果参数为null则为清空全部错误消息

// 类中定义protected $message = [    'user.required' => '账号必须填写'];// 使用方法定义$v->setMessages([    'user.required' => '账号必须填写']);

$scene

定义验证场景的数据,用于指定验证场景对应的验证字段等,详细用法查看验证场景一节,同样也可以通过setScene方法来进行设置,此方法为叠加,如果参数为null则为清空全部验证场景

// 类中定义protected $scene = [    'login' => ['user', 'pass']];// 使用方法定义$v->setScene([    'login' => ['user', 'pass']]);

$event

定义此验证器下的全局事件,详细用法查看事件一节

protected $event = [    CheckSiteStatus::class];

$customAttributes

定义验证字段的名称,也可以通过setCustomAttributes方法来进行设置,此方法为叠加,如果参数为null则为清空全部字段名称,错误消息中的:attribute会使用下面的值对应的替换

protected $customAttributes = [    'user' => '账号',    'pass' => '密码'];

$default

定义字段的默认值

protected $default = [    'name' => '张三'];

关于默认值的详情请查看默认值一节

$filter

用于数据验证后处理数据

protected $filter = [    'name' => 'trim'];

关于过滤器的详情请查看过滤器一节

$ruleMessage

类方法规则的错误信息

 protected $ruleMessage = [    ':attribute的值只能具有中文'];

点击查看示例

$filled

所有验证的字段在存在时不能为空,如果此属性值为true,所有规则会自动增加filled规则,默认为true

当出现以下情况时,不会自动添加filled规则

  • 验证规则中存在filled, nullable, accepted, present,required, required_if, required_unless, required_with,required_with_all, required_without, required_without_all规则
  • 验证规则存在extendImplicit定义的规则
  • 验证规则存在extendImplicitRule定义的规则
  • 验证规则实现了Itwmw\Validation\Support\Interfaces\ImplicitRule标记接口
protected bool $filled = true;

$regex

预定义正则表达式验证规则,详情查看正则表达式规则

protected $regex = [    'number' => '/^\d+$/'];

$group

定义验证规则组

protected $group = [    'username' => 'alpha_num|min:5|max:10'];protected $rule = [    'username' => 'required|username'];

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap