微擎表单验证开源项目

我要开发同款
匿名用户2021年12月06日
48阅读
开发技术PHP
所属分类jQuery插件、jQuery表单及相关
授权协议Apache

作品详情

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

中文|English

目录验证器验证场景场景事件规则管理器内置规则自定义验证规则自定义消息默认值过滤器验证集合安装

使用composer命令

composerrequirew7/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验证器类用于登录的验证。

classLoginValidateextendsValidate{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'=>'123@qq.com','pass'=>''];$validate=newLoginValidate();$validate->check($data);

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

$data=['user'=>'123@qq.com','pass'=>'123456'];$validate=newLoginValidate();$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标记接口protectedbool$filled=true;$regex

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

protected$regex=['number'=>'/^\\d+$/'];
查看全文
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论