#模型驗證
通過在模型中設置 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 命令