think-validate完整验证器插件

v1.4 版本
2022-01-11 版本更新时间
2580 安装
4 star

简介

基于Thinkphp6 Think-ORM全功能版,引用组件少,用于webman框架的validate数据验证器。

  • 支持助手函数validate(),无需手动创建。
  • 支持facade门面模式,use taoser\facade\Validate;
  • 支持场景验证scene
  • 支持表单令牌token
  • 支持unquire唯一性验证(基于TP think-orm Db类)
  • 支持多语言,依赖symfony/translation

安装

composer require taoser/webman-validate

使用

用法跟TP6完全一致,定义验证器:

namespace app\validate;

use taoser\Validate;

class User extends Validate
{
    protected $rule = [
        'name'  =>  'require|max:25',
        'email' =>  'email',
    ];

}

支持创建验证器进行数据验证

<?php
namespace app\index\validate;

use taoser\Validate;

class User extends Validate
{
    // 定义规则
    protected $rule =   [
        'name'  => 'require|max:25',
        'age'   => 'number|between:1,120',
        'email' => 'email',    
    ];

    // 定义信息
    protected $message  =   [
        'name.require' => '名称必须',
        'name.max'     => '名称最多不能超过25个字符',
        'age.number'   => '年龄必须是数字',
        'age.between'  => '年龄只能在1-120之间',
        'email'        => '邮箱格式错误',    
    ];

    //定义场景
    protected $scene = [
        'edit'  =>  ['name','age'],
    ];

}

验证器调用代码如下:

<?php
namespace app\controller;

use app\validate\User;
use taoser\exception\ValidateException;

class Index
{
    public function index()
    {
        try {
            validate(User::class)->check([
                'name'  => 'thinkphp',
                'email' => 'thinkphp@qq.com',
            ]);
        } catch (ValidateException $e) {
            // 验证失败 输出错误信息
            dump($e->getError());
        }
    }
}

    //场景校验方法
    $data = [
        'name'  => 'thinkphp',
        'age'   => 10,
        'email' => 'thinkphp@qq.com',
    ];

    try {
        validate(app\validate\User::class)
            ->scene('edit')
            ->check($data);
    } catch (ValidateException $e) {
        // 验证失败 输出错误信息
        dump($e->getError());
    }

    // 门面方法验证

    $validate = \taoser\facade\Validate::rule('age', 'number|between:1,120')
    ->rule([
        'name'  => 'require|max:25',
        'email' => 'email'
    ]);

    $data = [
        'name'  => 'thinkphp',
        'email' => 'thinkphp@qq.com'
    ];

    if (!$validate->check($data)) {
        dump($validate->getError());
    }

更多请参考THinkphp6 validate验证器

效果图(可选)