Hyperf移植TP框架验证器组件

# php / 165访问 / 0评论 / 2021-09-08

快速引入

composer require kumaomao/validate

移植于ThinkPHP验证器

 

普通使用方法和tp一样

 

同时本组件也支持hyperf的注解

 

@Validate()

 

参数

 

validate 验证器 例:validate=AdminValidate::class

 

scene 场景

 

batch 是否批量验证 默认false

 

throws 是否主动抛出错误 默认true,当值为false不会主动抛出错误,可通过获取$this->request->getAttribute('validate')的值来手动抛出错误,该值为null时表示通过验证

 

filter 是否过滤多余字段 默认true 只获取验证的字段 通过$this->request->getParsedBody()获取

 

例: 发布验证器语言文件

 

@validate(validate=AdminValidate::class,scene="login",throws=false)

hyperf国际化组件支持 发布验证器语言文件

 

 php bin/hyperf.php vendor:publish kumaomao/validate

默认发布后语言包地址

 

/storage

    /languages

        /en

            validation.php

        /zh_CN

            validation.php

使用示例:

 

先定义一个验证器,方法与TP类似

 

<?php
namespace App\Http\Admin\Validate;

use Kumaomao\Validate\Validate\Validate;


class LoginValidate extends Validate
{

    protected $rule = [

        'username|用户名' =>'require|max:16|min:5',

        'password' => 'require|max:16|min:5',

    ];

    protected $scene = [

        'login' => ['username','password']

    ];

}

在方法中使用(展示的为注解方式,非注解方式使用与TP类似):

 

 

/**

     * 用户登录方法

     * @param string username

     * @param string password

     * @RequestMapping(path="login",methods="post")

     * @Validate(validate=LoginValidate::class,scene="login")

     */

    public function login(){

        //获取通过验证的值

        $validata = $this->request->getParsedBody();

        $this->admin->login($validata['username'],$validata['password']);

        return json(['code'=>1,'msg'=>'登录成功']);

    }

 

3

本文地址: https://www.kumaomao.cn/article/DAWPXRWBNF.html