hyperf如何实现验证

发布时间:2021-12-30 13:34:04 阅读:1611次

我们经常需要对参数进行判断

比如入参及表单参数判断

经常自己手写很不优雅

在hyperf中有没有像和laravel一样优雅的处理方法呢?

安装validation

composer require hyperf/validation
安装translation

composer require hyperf/translation
生成translation配置文件

php bin/hyperf.php vendor:publish hyperf/translation
生成validation配置文件

php bin/hyperf.php vendor:publish hyperf/validation
生成验证器LoginRequest

php bin/hyperf.php gen:request LoginRequest
控制器 app/Controller/IndexController.php

<?php
namespace App\Controller;

use Hyperf\HttpServer\Annotation\AutoController;
use App\Request\LoginRequest;

/**
 * @AutoController();
 */
class IndexController
{
        public function index(LoginRequest $request){
                $validateData = $request->validated();
                return $validateData;
        }
}
验证器添加规则 app/Request/LoginRequest.php

<?php

declare(strict_types=1);

namespace App\Request;

use Hyperf\Validation\Request\FormRequest;

class LoginRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     */
    public function authorize(): bool
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     */
    public function rules(): array
    {
        return [
                'name'=>'required',
                'password'=>'required'
        ];
    }
}
添加验证器中间件

<?php

declare(strict_types=1);

return [
        'http' => [
                \Hyperf\Validation\Middleware\ValidationMiddleware::class
    ],
];
添加异常处理器

<?php

declare(strict_types=1);

return [
    'handler' => [
        'http' => [
            Hyperf\HttpServer\Exception\Handler\HttpExceptionHandler::class,
            App\Exception\Handler\AppExceptionHandler::class,
            Hyperf\Validation\ValidationExceptionHandler::class
        ],
    ],
];
测试1

curl 118.195.173.53:9501/index/index
name 字段是必须的
测试2

curl 118.195.173.53:9501/index/index?name=huyongjian
password 字段是必须
测试3

curl 118.195.173.53:9501/index/index?name=huyongjian\&password=123456
{
    "name": "huyongjian",
    "password": "123456"
}

如有问题,可以QQ搜索群1028468525加入群聊,欢迎一起研究技术

支付宝 微信

有疑问联系站长,请联系QQ:QQ咨询
下一篇:hyperf事件机制

转载请注明:hyperf如何实现验证 出自老鄢博客 | 欢迎分享