当前位置:首页 > Hyperf > 正文内容

Hyperf表单数据验证器

陈杰3年前 (2020-12-09)Hyperf3379

hyperf虽然基于swoole,但是风格很像laravel,所以上手还是挺快的。

记录一下基于hyperf的表单验证器的代码。


因为写代码喜欢一把梭,所以太过解耦的验证类就不用了,太麻烦了。

简单一点。


照例,先引入一下组件包,然后发布一下配置文件

composer require hyperf/validation

发布 Translation 组件的文件:

php bin/hyperf.php vendor:publish hyperf/translationCopy to clipboardErrorCopied

发布验证器组件的文件:

php bin/hyperf.php vendor:publish hyperf/validation

至此我们的验证模块就引入进来了。


然后就是我们的验证规则的书写了。。。


我以一个验证横坐标和纵坐标的范围举个例子:

x和y分别为必传参数,且为整形,并且范围在1-1000之间,x参数意思为横坐标,y参数意思为纵坐标。

public function get_map()
{
   $rules  = [
       'x' => 'required|integer|between:1,1000',
       'y' => 'required|integer|between:1,1000'
   ];
   $params = $this->checkValidate($this->request->all(), $rules, ['x' => '横坐标', 'y' => '纵坐标']);
   $data   = MapModel::get_map_by_xy((int)$params['x'], (int)$params['y']);
   return $this->success($data->toArray());
}



然后看我们的checkValidate方法,这里注解 依赖注入了ValidatorFactory代理类,所以要use一下

use App\Exception\Handler\MyException;
use Hyperf\Di\Annotation\Inject;
use Hyperf\Validation\ValidatorFactory;


/**
* @Inject()
* @var ValidatorFactory
*/
protected $validator;

function checkValidate($params = [], $rules = [], $field = [], $message = [])
{
   $validate = $this->validator->make($params, $rules, $message, $field);
   if ($validate->fails()) {
       $this->returnError($validate->errors()->first());
   }
   return $params;
}


验证失败就抛出异常,验证通过就返回验证过的参数,至此我们的表单验证就搞定了,看一下效果

image.png


传递x=0&y=120


image.png


下一篇记录一下hyperf的异常处理,在我们的checkValidate中怎么拿到错误了就直接中断允许并返回错误信息

扫描二维码至手机访问

扫描二维码推送至手机访问。

版权声明:本文由何烦过虎溪发布,如需转载请注明出处。

转载请注明出处:http://blog.95shouyou.com/?id=17

分享给朋友:
返回列表

没有更早的文章了...

下一篇:Hyperf异常类,抛出异常并中断执行

相关文章

Hyperf缓存封装

hyperf官方的缓存文档写得很好,但是对于一个从传统框架比如laravel thinkphp转到这上面来学习的同学就不是很友好了。原理都很好,自动维护缓存,注解缓存这些东西,在我开始学习php的时候...

Hyperf中间件验证用户登录状态

才开始接触hyperf,就被他惊人的并发处理性能所惊呆了。所以在工作空余之时学习一下hyperf。今天要学习一下hyperf的中间件的使用。新建一个中间件,主要功能就是取每次请求的header头里面的...

Hyperf的redis异步队列实战

突发奇想想写一个RTS战略类游戏。RTS战略类游戏核心玩法肯定是有养成啊,比如建筑升级啊,征兵队列啊,之类的,总之就是用户现在点了操作但是拿不到结果,可能要等几十分钟或者更久拿到结果。现在我们来实现以...

Hyperf跨域问题的解决方案

Hyperf跨域的问题解决方案在传统框架中一般来说有两种方案例如在laravel中直接在入口文件index.php中加上允许跨域代码,或者通过nginx反向代理配置在laravel中header(&#...

Hyperf异常类,抛出异常并中断执行

Hyperf异常类,抛出异常并中断执行

在我们的传统的php框架中,我个人习惯代码需要分层的。例如分为 Controller层,Service层,Model层。Controller层就是做个参数接收啊,参数验证之类的事情,然后Service...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。