## 筛选表单字段验证器
> 说明:
设置筛选表单字段验证器。在点击搜索按钮进行列表的搜索时,对预设验证规则的筛选表单字段数据进行验证。在设定的验证器中可以写字段自定义的验证方法,也可对筛选表单字段数据进行进一步处理(handleData操作)。默认筛选表单字段验证器为 `\yunj\Validate`
方法:`filterValidate($callable)`
* 参数 **callable** (必须),例:
```php
filterValidate(function(){
return TestValidate();
});
```
* 返回值:需为 `\yunj\Validate`或其子类的实例对象
* 验证环境scene:
* `count`:列表搜索时获取搜索数据总数的验证环境
在`count`环境的验证数据中存在固定参数,`$data["state"]`当前验证数据行所在状态栏,`$data["ids"]`当前选中数据行的id集合。
* `items`:列表搜索时获取搜索数据的验证环境
在`items`环境的验证数据中存在固定参数 `$data["state"]` 当前验证数据行所在状态栏,`$data["ids"]`当前选中数据行的id集合。
* `export`:列表搜索时导出数据的验证环境
在`items`环境的验证数据中存在固定参数 `$data["state"]` 当前验证数据行所在状态栏,`$data["ids"]`当前选中数据行的id集合。
> 示例:
搜索产品数据:`序列号(sn)`、`名称(name)`、`商户(mid)`...
* 验证器
```php
namespace app\demo\validate\product;
final class Lists extends \yunj\Validate {
// 自定义验证方法,校验序列号格式(这里序列号定义为10位字母组合)
protected function checkSn($value,$rule = "",$data){
if(!$value) return true;
if(!preg_match("/^[a-zA-Z]{10}$/",$value)) return "序列号仅支持10位字母组合";
return true;
}
protected function handleData(array $raw_data, $scene): array {
$data = $raw_data;
switch ($scene) {
case "count":
// 固定参数:状态
$state = $data["state"];
// 固定参数:选中数据行id集合
$ids = $data["ids"];
// 校验商户有效性,并获取商户数据添加到验证数据里
$merchant = Db::name("merchant")->where("id","=",$data["mid"])->select();
if(!$merchant ) throw_error_json("商户数据错误");
$data["merchant_data"] = $merchant;
break;
case "items":
...
break;
case "export":
...
break;
}
return $data;
}
}
```
* 表格构建器:
```php
$builder=YT('general_example')->filter(function($state){
$filter=[
'sn'=>['title'=>'序列号','verify'=>'checkSn'],
'name'=>['title'=>'名称','verify'=>'checkSn','desc'=>'只能输入汉字'],
'mid'=>[
'title'=>'商户',
'type'=>'dropdown_search',
'verify'=>'positiveInteger',
"multi"=>false,
'url'=>url('merchantOptions')
]
];
return $filter;
})
->filterValidate(\app\demo\validate\product\Lists::class)
->count(function($filter){
// 获取展商数据
$merchant = $filter["merchant_data"];
// 业务处理...
})->items(function($limit_start,$limit_length,$filter,$sort){
...
});
```
- 序言
- 基础
- 安装
- 目录结构
- 配置
- 版本
- 控制器
- 使用说明
- 视图模板
- 使用说明
- 区块重写
- seo
- headStyle
- headScript
- content
- script
- 验证器
- TP验证器
- 使用说明
- 自动处理
- 数据处理
- 前端验证器
- 概述
- 调用示例
- 通用验证规则
- 表单构建器
- 基础示例
- 初始化
- 链式操作
- tab
- url
- field
- fieldValidate
- button
- load
- submit
- 渲染输出
- 字段配置
- 使用说明
- 隐藏域(hidden)
- 文本框(text)
- 文本域(textarea)
- 密码框(password)
- 富文本(editor)
- 文档编辑(markdown)
- 下拉选框(select)
- 单选框(radio)
- 复选框(checkbox)
- 开关(switch)
- 日期(date)
- 时间日期(datetime)
- 年份(year)
- 月份(month)
- 时间(time)
- 单图(img)
- 多图(imgs)
- 单文件(file)
- 多文件(files)
- 取色器(color)
- 地区联动(area)
- 下拉搜索(dropdownSearch)
- 树(tree)
- 自定义字段
- 单一字段调用
- 概述
- 示例
- 表格构建器
- 基础示例
- 初始化
- 链式操作
- state
- url
- page
- limit
- limits
- filter
- filterValidate
- toolbar
- defaultToolbar
- import
- cols
- count
- items
- event
- 渲染输出
- 表头配置
- 使用说明
- 枚举(enum)
- 时间日期(datetime)
- 单图(img)
- 多图(imgs)
- 单文件(file)
- 多文件(files)
- 拖拽排序(dragSort)
- 颜色呈现(color)
- 地区呈现(area)
- 操作栏(action)
- 自定义表头
- JS事件
- 异步事件监听
- 导入构建器
- 基础示例
- 初始化
- 链式操作
- sheet
- cols
- colsValidate
- limit
- tips
- row
- rows
- 渲染输出
- 主题开发
- 实现步骤
- 系统主题
- 注意
- PHP公共方法库
- 配置
- yunj_config
- 构建器
- YF
- YT
- YI
- 重定向
- url_tips
- redirect_tips
- throw_redirect
- 响应输出
- response_msg
- response_json
- success_json
- error_json
- throw_json
- throw_success_json
- throw_error_json
- 数组
- array_eq
- array_in
- array_supp
- array_depth
- array_insert
- array_key_prefix
- 验证
- is_mobile
- is_positive_int
- is_positive_integer
- is_json
- is_datetime
- is_md5_result
- 时间日期
- msectime
- 字符串
- rand_char
- filter_sql
- start_with
- exception_to_str
- 数据加解密
- aes_encrypt
- aes_decrypt
- rsa_encrypt
- rsa_decrypt
- rsa_sign
- rsa_sign_verify
- JS公共方法库
- 调用说明
- 数据类型
- varType
- 判断
- isMobile
- isObj
- isEmptyObj
- isArray
- isEmptyArray
- isString
- isEmptyString
- isBool
- isNumber
- isFloat
- isFunction
- isUndefined
- isJson
- isCsv
- isXls
- isXlsx
- 字符串
- fileExt
- fileNameExt
- currTimestamp
- currDatetime
- timestampFormat
- 对象
- objSupp
- 图片
- previewImg
- url
- url
- urlParam
- urlPushParam
- 页面
- openNewPage
- openTab
- openPopup
- rawPageWin
- redirectTab
- redirectLogin
- isPopupPage
- isTabPage
- currPageId
- close
- closeCurr
- closeAll
- 网络
- request
- 数据加解密
- aesEncrypt
- aesDecrypt
- rsaEncrypt
- rsaDecrypt
- rsaSign
- rsaSignVerify
- 附录
- 升级指导
- 更新日志