创建一个高效的API Validator是开发中不可或缺的一部分
$rsp = ['err_code' => 0, 'err_msg' => 'OK'];$input = $request->all();$rules = [ 'name' => 'required', 'person_tel' => 'required|regex:/^1[0-9]{10}$/', 'code' => 'required|digits:6'];$messages = [ 'name' => '请填写公司名称', 'person_tel' => '请填写正确的手机号', 'code' => '请填写正确的验证码'];$validator = Validator::make($input, $rules, $messages);$validator->after(function ($validator) use ($request) { $redis_code = Redis::get(env('APP_NAME').'sms'.$request->get('person_tel')); if ($redis_code != $request->get('code')) { $validator->errors()->add('code', '验证码错误'); }});if ($validator->fails()) { $rsp['err_code'] = -1; $rsp['err_msg'] = "数据校验失败"; $rsp['data'] = $validator->errors()->all(); return response()->json($rsp);}
为何要使用 validator 的 after 方法
在这个例子中,我们在验证过程中定义了自定义的校验逻辑
具体来说,在 Validator 的 after 方法中,我们可以实现由业务需求驱动的额外校验
这种做法不仅提升了 Validator 的灵活性,还为未来添加更多校验规则提供了便利 增强了校验逻辑的可扩展性