我们在书写控制器语句在有时候需要做到验证
比如说我要判断提交的某个字段的变量 不能为空 书写起来就很麻烦
如果验证的规则多了就感觉代码一大堆 影响代码的美观 而且效率不高
所以 需要一款表单验证器了
把validator.class.php 验证类 放到/yzmphp/core/class目录下 即可
然后 我们需要构建一个模型验证类 可以输出验证规则 以及自定义错误提示
以下是一个示例文件 具体你需要到模块的model目录下新建一个模型类 比如说我新建了一个文件叫test_validate.class.php
<?php // +---------------------------------------------------------------------- // | Site: [ http://www.yzmcms.com] // +---------------------------------------------------------------------- // | Copyright: 袁志蒙工作室,并保留所有权利 // +---------------------------------------------------------------------- // | Author: zhaosong 原创字段验证类 请不要未授权的情况下搬运代码为自己的 // +---------------------------------------------------------------------- // | Explain: 这不是一个自由软件,您只能在不用于商业目的的前提下对程序代码进行修改和使用,不允许对程序代码以任何形式任何目的的再发布! // +---------------------------------------------------------------------- yzm_base::load_sys_class('validator','',0); class test_validate extends validator { /** * @书写验证规则 * @author zhaosong * @date 2023-11-03 */ protected $rules = [ 'model' => 'required|min:6', 'end'=>'required' ]; /** * @自定义错误信息提示 * @author zhaosong * @date 2023-11-03 */ protected $messages = [ 'model.required' => 'model模型不能为空', 'model.min' => 'model字段最少需要6位', 'end.isnumber' => 'end这个字段必须为数字', 'end.required'=>'这个字段不能为空!!!' ]; }
我们可以到表单方法中使用 列如
<?php // +---------------------------------------------------------------------- // | Site: [ http://www.yzmcms.com] // +---------------------------------------------------------------------- // | Copyright: 袁志蒙工作室,并保留所有权利 // +---------------------------------------------------------------------- // | Author: YuanZhiMeng // +---------------------------------------------------------------------- // | Explain: 这不是一个自由软件,您只能在不用于商业目的的前提下对程序代码进行修改和使用,不允许对程序代码以任何形式任何目的的再发布! // +---------------------------------------------------------------------- defined('IN_YZMPHP') or exit('Access Denied'); class test { // 请注意这只是一个测试模块 请按照你需求来设置验证规则 以下是在add方法中 // 获取的表单参数提交给验证模型 验证数据是否符合验证规则 public function add(){ if(is_post()) { // 加载了模型验证类 yzm_base::load_model('test_validate', '', 0); // 这里把提交的参数传递给模型验证类 $validator = new test_validate($_POST); $isValid = $validator->check(); if($isValid){ // 如果验证规则不符合就会回调错误信息 没有信息回调就是验证通过的意思 return_message($isValid, 0); } } } }
基本验证规则就是这样 我们来查看效果
我们在字段为空的时候 会错误提示 该字段不能为空 这是英文的 如果 我们需要实现自定义提示信息
我们可以在模型验证类中写
protected $messages = [ 'end.required'=>'这个字段不能为空!!!' ];
看看效果
我们可以一个提交变量字段验证多个规则 列如
protected $rules = [ 'model' => 'required|min:6', 'end'=>'required' ];
先验证 不能为空 后验证 字符串最少6为 使用分号隔开
然后再验证下一个需要验证的字段
如果字段有多个验证规则 我们需要分开设置多个自定义提示信息列如
protected $messages = [ 'model.required' => 'model模型不能为空', 'model.min' => 'model字段最少需要6位', ];
这块应该是可以理解的 那我们看看内置多少验证规则可以写
验证某个字段必须,例如:
'name'=>'require'
验证某个字段的值是否为纯数字例如:
'num'=>'number'
验证某个字段的值是否为整数,例如:
'num'=>'integer'
验证某个字段的值是否为浮点数字,例如:
'num'=>'float'
验证某个字段的值是否为布尔值,例如:
'num'=>'boolean'
验证某个字段的值是否为email地址,例如:
'email'=>'email'
验证某个字段的值是否为数组,例如:
'info'=>'array'
验证某个字段的值是否为字符串,例如:
'info'=>'string'
验证值是否为有效的日期,例如:
'date'=>'date'
验证某个字段的值是否为纯字母,例如:
'name'=>'alpha'
验证某个字段的值是否为字母和数字,例如:
'name'=>'alnum'
验证某个字段的值只能是汉字,例如:
'name'=>'hanzi'
验证某个字段的值只能是汉字、字母和数字,例如:
'name'=>'hanzi_alnum'
验证某个字段的值只能是汉字、字母、数字和下划线_及破折号-,例如:
'name'=>'hanzi_alnum_dash'
验证某个字段的值只能是控制字符(换行、缩进、空格),例如:
'name'=>'control_chars'
验证某个字段的值只能是小写字符,例如:
'name'=>'lowercase'
验证某个字段的值只能是大写字符,例如:
'name'=>'uppercase'
验证某个字段的值只能是空白字符(包括缩进,垂直制表符,换行符,回车和换页字符),例如:
'name'=>'whitespace'
验证某个字段的值是否为有效的域名或者IP,例如:
'host'=>'domain_or_ip'
验证某个字段的值是否为有效的URL地址,例如:
'url'=>'url'
验证某个字段的值是否为指定格式的日期,例如:
'dates'=>'dates'
验证某个字段的值是否为有效的手机,例如:
'mobile'=>'phone'
验证某个字段的值是否为有效的身份证格式,例如:
'id_card'=>'id_card'
验证某个字段的值的最大长度,例如:
'name'=>'max_length:25'
验证某个字段是否和另外一个字段的值一致,例如:
'repassword'=>'same:11'
验证某个字段是否以某个字符串开头,例如:
'name'=>'starts_with:yzmcms'
验证某个字段是否以某个字符串结尾,例如:
'name'=>'ends_with:yzmcms'
验证某个字段是否以包含某个字符串,例如:
'name'=>'contains:yzmcms'
验证是否等于某个值,例如:
'score'=>'equals:100'
验证是否大于等于某个值,例如:
'score'=>'greater_than_equal:60'
验证是否小于等于某个值,例如:
'score'=>'less_than_equal:100'
未经允许本人授权 严谨搬运至某盗版中使用 源码原创所写 使用灵活
想使用但不懂 可以提出问题 我给你解决 谢谢!!
登录后可查看详情!