自己写独立的验证器,类中调用该验证器验证,这方面的验证器,可以很好的建造验证层,且可以在多种项目中复用
方式一
创建base.php
protected function isPositiveInteger($value, $rule='', $data='', $field='')
{
$request = Request::instance();
$param = $request->param();//获取全部请求的参数
if (is_numeric($value) && is_int($value + 0) && ($value + 0) > 0) {
return true;
}
return $field . '必须是正整数';
}
validate中创建IDmustINt.php
继承 Base
class IDMustBePositiveInt extends BaseValidate
{
protected $rule = [
'id' => 'require|isPositiveInteger',
];
}
调用
public function index($id){
$data = ['id'=>$id]
$validate = new IDMustBePositiveInt()
$result = $validate->batch()
->check($data);
if($result){
}else{
}
}
简化的最终形式
$validate = new IDMustBePositiveInt;
$validate->gocheck()
为了这种形式需要构建一个验证层
方式2
独立的验证,卸载单独的类中
public function test()
{
// 假设请求数据已经通过POST方法提交
$data = ['username'=>'nissmi','email'=>'fygggjj@jj.com','password'=>'422346217'];
// 验证规则
$rules = [
['username', 'require|max:25|min:5', '用户名不能为空|用户名长度应在5到25个字符之间'],
['email', 'email', '邮箱格式不正确|该邮箱已被注册'],
['password', 'require|min:8', '密码不能为空|密码至少需要8位'],
];
// 进行验证
$validate = new \Think\Validate($rules);
if (!$validate->check($data)) {
// 验证失败,抛出自定义异常
throw new Exception($validate->getError(), 422);
}
// 验证通过后的逻辑处理,比如保存用户信息到数据库
// ...
// 成功响应
return json(['status' => 'success', 'message' => '注册成功']);
}