多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
> 说明 在验证器常规的规则校验通过后,可在验证器中书通过 `handleData` 方法对数据进行进一步的处理。 方法:handleData(array $raw_data,$scene) 参数: | 参数 | 类型 | 说明 | | --- | --- | --- | | **raw_data** | array | 原始传入的校验数据,调用验证器 `check($data)` 方法时传入的数据 | | **scene** | string或number或null | 校验场景 | 返回值:处理后的数据,可通过调用验证器 `getData()` 方法获取 > 示例 * 验证器: ```php namespace app\demo\validate; use think\Db; final class FormDemo extends Validate { protected $rule = [ 'username' => 'require', 'password' => 'require', ]; protected $message = [ 'username.require' => '[账户]不能为空', 'password.require' => '[密码]不能为空', ]; protected $scene = [ 'Test' => ['username', 'password'], ]; protected function handleData(array $raw_data, $scene): array { $data = $raw_data; switch ($scene) { case "Test": // 检查username是否存在 $hasExist = Db::name("member")->where([["username", "eq", $data["username"]]])->value("id"); if ($hasExist) { // 可通过调用方法 throw_error_json 或抛出异常 Exception 的方式设置错误信息,并返回验证失败 // 方式1 throw_error_json("[账户]已存在"); // 方式2 //throw new \Exception("[账户]已存在"); } break; } // 返回处理后的数据 return $data; } } ``` * 验证器调用: ```php $data = [ "username" => "xiaowang", "password" => "123456", ]; $validate = new \app\demo\validate\FormDemo(); $res = $validate->scene("Test")->check($data); if ($res) { // 验证通过,获取处理后的数据 $data = $validate->getData(); dump($data); } else { // 验证失败,获取失败信息 $error = $validate->getError(); dump($error); } ```