#模型验证
通过在模型中设置 validate 属性可以方便的进行数据验证。
**验证错误信息同时会保存在$_SESSION['_validate']中**
##语法
```
array(字段名,验证方法,错误信息,验证条件,验证时机)
验证条件 (可选):
self::EXISTS_VALIDATE 值:1 有字段时
self::NO_EMPTY_VALIDATE 值:2 值不为空时
self::MUST_VALIDATE 值:3 必须验证
self::EMPTY_VALIDATE 值:4 值为空时验证
self::NO_EXIST_VALIDATE 值:5 不存在字段时处理
验证时间 (可选):
self::MODEL_INSERT 值:1 插入时处理
self::MODEL_UPDATE 值:2 更新时处理
self::MODEL_BOTH 值:3 全部情况时处理
```
错误信息会记录到模型对象的 error 属性中,使用getError 模型方法获取
##create方法
执行模型的 create 方法时会自动进行自动验证。
>注:执行add或save方法时会自动执行 create 模型方法,所以执行add或save方法前执行create会造成两次处理,没有必要。
```
<?php namespace Home\Model;
use Hdphp\Model\Model;
class userModel extends Model {
protected $validate = [
['username','required','用户名不能为空',3,3]
];
public function store()
{
if($this->create()){
echo ("验证通过");
}
}
}
```
##添加实例
```
<?php namespace Home\Model;
use Hdphp\Model\Model;
class userModel extends Model {
protected $validate = [
['username','required','用户名不能为空',3,3]
];
public function store()
{
return $this->add();
}
}
```
**正则表达式验证**
如果函数是正则表达式,系统会自动以正则验证
```
<?php namespace Cms\Model;
use Hdphp\Model\Model;
class Field extends Model{
protected $validate=array(
['age','/^\d+$/','年龄必须是数字',3,3]
);
}
```
**表值碓一验证**
```
protected $validate = array(
//验证username的值必须在user_table表中唯一
//系统可以根据数据中的主键字段自动分析,也就是说更新时会忽略当前字段相同值
//也就是说最后2个参数都设置为3即可
['username','unique','用户已存在',3,3]
);
//更新时,本次更新的记录数据有相同字段值是可以的。
```
##自定义验证规则
```
<?php namespace Home\Model;
use Hdphp\Model\Model;
class userModel extends Model {
protected $validate = array(
['username', 'checkUser', '用户名长度错误', 3, 3]
);
//以下是自定义的验证规则
//$field 字段名
//$value 字段值
//$params 参数比如 maxlen:10 10就是参数
//$data 所有表单数据
public function checkUser($field, $value, $params, $data)
{
//返回true,为验证通过
if (mb_strlen($value, 'utf-8') > 5) {
return true;
}
}
}
```
##系统规则
```
required 字段不存在时验证失败
exists 字段存在时验证失败
email 邮箱
http 网址
tel 固定电话
phone 手机
zipCode 邮政编码
user 用户名长度如 :user:5,20
maxlen 最大长度如:maxlen:10
minlen 最小长度如:minlen:10
num 数字范围 如:num:20,60
regexp 正则如:regexp:/^\d{5,20}$/
confirm 两个字段值比对如:confirm:password2
china 验证中文
identity 身份证
```
##验证顺序
参与到验证的动作包括,模型方法、系统验证规则,验证顺序如下:
1. 模型中是否存在同名的验证方法函数
2. 系统验证类中是否存在同名的验证方法
3. 验证方法否为正则表达式
4. 以上3项都没有则本条规则忽略
- 基础
- 框架特性
- 开发规范
- 许可协议
- 安装
- 伪静态
- 作者
- 更新日志
- 架构
- 入口文件
- 目录结构
- 系统常量
- 自动加载
- 应用目录
- 配置
- 设置配置
- 检测配置
- 获取配置
- 配置文件
- 扩展配置
- c 函数
- 函数
- 工具函数
- 控制器
- 定义
- 空方法
- 基本访问
- 路由
- 基础路由
- 控制器路由
- 路由参数
- 参数检测
- 分组路由
- RESTful
- 数据库
- 配置
- 核心操作
- 查询构造器
- 表操作
- 事务处理
- 函数
- 查询日志
- 模型
- 定义模型
- 模型动作
- 构建数据
- 模型验证
- 自动完成
- 自动过滤
- 字段映射
- 表单令牌
- 字段保护
- 视图模型
- 关联模型
- 魔术方法
- 视图
- 模板配置
- 模板文件
- 分配数据
- 请求响应
- 系统标签
- 扩展标签
- 缓存模板
- 模板继承
- 中间件与钩子
- 中间件
- 钩子
- 缓存
- 基础
- Mysql缓存
- 文件缓存
- 调试
- Trace
- 日志
- 调试模式
- 服务
- 介绍
- 创建服务
- 系统服务
- 自动完成
- 压缩&解压
- 自动验证
- 上传
- 字符串
- 响应
- 请求数据
- RBAC
- QQ整合登录
- 分页
- 邮件
- 语言
- 图像
- 生成静态
- 目录操作
- 数据处理
- curl
- 加密
- Cookie
- 验证码
- 购物车
- 备份
- 数组
- 支付宝
- xml
- 工具
- 云接口
- 前端组件
- 基本配置
- 列表框日期选择
- CSS 样式
- URL操作
- 数据验证
- 城市选择
- JSON处理
- 幻灯片
- checkbox滑动样式
- 消息框
- md5
- 模态框
- 上传表单样式
- 选择字体
- 剪贴板
- 上传图片
- 上传文件
- 拾色器 spectrum
- 列表框 select2
- 百度地图
- 二维码生成
- 表单提交
- 时间管理 moment
- 加载动画
- 百度编辑器
- Cookie操作
- 图标库 font-awesome
- emotion表情
- domReady
- 日期 datetimepicker
- 日期区间列表 daterangepicker
- 日期区间 daterangepicker
- 时间 clockpicker
- 图表
- 光标控制 caret
- 表单验证 bootstrapValidator
- 微信
- 配置项
- 绑定开发者
- 获取access_token
- 网页授权获取用户基本信息
- 微信支付
- 微信红包
- 用户管理
- 二维码
- 回复消息
- 消息管理
- 素材管理
- 会员组管理
- 事件管理
- 消息群发
- 客服
- 自定义菜单
- 菜单管理
- 菜单事件
- 附录
- 升级环境
- HTTP 状态码
- GIT 命令