假如我们有一个Settings类,我们需要对表单提交的数据进行有效验证。

先写一个数据验证方法:
/** * 验证器 * @param $param array|object 验证的数据 * @param $action string 方法名 *
@return bool bool */ private function settingsValidate($param,$action) {
$validate = $this->getValidateBase(Request()->controller()); if($validate
instanceof Settingss){ #批量验证数据是否合法 $settingsValidate = $validate->scene($action)
->batch(true)->check($param); if (!$settingsValidate) { return $this->
ServerResponse::createByError($validate->getError()); } return $validate->
hasScene($action); } return false; }
$this->getValidateBase(Request()->controller());
这句其实是调用父类中的方法,类似工厂设计模式,我们看父类base中的getValidateBase()方法的写法:

然后我们进行场景验证,名字是¥action 。这个名字与当前方法的名字是一样的。例如settings验证器中的某个场景写法:

而且我们进行的是批量验证batch(true),只要不满足某些条件,它会一起弹出错误提示,而不是单条提示。
#批量验证数据是否合法 $settingsValidate = $validate->scene($action)->batch(true)->check(
$param);
当验证失败的的时候,我们放出错误提示:
return $this->ServerResponse::createByError($validate->getError());
如果所有字段全部满足要求,那么我们返回true就可以了 。否则返回false。

至此一个验证方法就完成了。

然后我们可以在控制器中直接调用这个方法就可以完成数据的验证:
$this->settingsValidate($param,$action);
think you !

技术
©2019-2020 Toolsou All rights reserved,
Java开发2020年最新常见面试题整理【Spring源码分析】42-@Conditional详解element-ui踩坑记录神仙面试宝典你有了吗?半月看完25大专题,居然斩获阿里P8offer使用css样式设计一个简单的html登陆界面XCTF攻防世界web新手练习_ 9_command_executionJS中的解构赋值的详解与具体用途Python Web 框架elementui 穿梭框 el-transfer 展示列表内容文字过长ConcurrentHashMap实现原理及源码解析