TRR · 验证 · 注释参数验证模式


7/9/2019 validate TRR

TRR独特验证模式

简介

TP5.1 的反射验证器核心类,含参数中间件封装,路由参数验证中间件,方法注释参数提取器,基于wangyu/reflex-core扩展

安装

composer require wangyu/tp-validate
1

快速入门

1. middleware.php 中间件注册

文件地址:config/middleware.php

内容:

<?php

return [
    // 默认中间件命名空间
    'default_namespace' => 'app\\http\\middleware\\',
    'Validate' => WangYu\Param::class,
];

1
2
3
4
5
6
7
8

2. 方法注释中使用 @validate()函数 或 @param()

  • 函数说明
@函数名 解释 格式 函数参数说明
validate 注释验证器函数 @validate('name') name: 验证器名称
param 注释参数函数 @param('name','doc','rule') name: 参数名称,doc: 解释, rule: 规则
  • @validate函数说明

@validate()函数,需要在application/api/validate目录下创建验证器。 或者:创建 config/trr.php 配置文件,内容为:

<?php 
return [
    // 默认验证器路径
    'validate_root_path' => 'api/validate',
];
1
2
3
4
5
  • @param函数说明

@param函数与@validate,作者优选@validate,希望如果每个方法里只用一种验证方式

3. 在路由配置route/route.php配置路由时,加上middleware()

例如:


<?php
use think\facade\Route;

Route::group('', function () {
    Route::group('v1', function () {
        // 查询所有图书
        Route::post('book/', 'api/v1.Book/create');
    });
})->middleware(['Validate'])->allowCrossDomain();
1
2
3
4
5
6
7
8
9
10

4. 通过postman访问测试效果

  • 先确定下,注释验证函数是否启用
/**
 * @doc('创建图书')
 * @route('','post')
 * @validate('CreateGroup')
 * @param('name','图书名称','require|graph|length:1,50')
 * @param('img','图书img','require|graph|length:1,16')
 * @return array
 */
public function create()
{
    return json(['msg'=>'创建成功'],200);
}
1
2
3
4
5
6
7
8
9
10
11
12
  • 确认中间件是否注册

<?php

return [
    // 默认中间件命名空间
    'default_namespace' => 'app\\http\\middleware\\',
    'Validate' => WangYu\Param::class,
];

1
2
3
4
5
6
7
8
9
  • 确认路由是否启用验证中间件

<?php
use think\facade\Route;

Route::group('', function () {
    Route::group('v1', function () {
        // 查询所有图书
        Route::post('book/', 'api/v1.Book/create');
    });
})->middleware(['Validate'])->allowCrossDomain();
1
2
3
4
5
6
7
8
9
10
  • 最后确认下验证器是否创建

正确输出

  • 不带参数,测试错误输出

错误输出

  • 带上正确参数,测试验证

正确输出

Last Updated: 7/24/2019, 11:35:36 AM