Thinkphp5.0添加命令行创建验证器validate类

前言

最近接手了个用FastAdmin(基于tp5)写的项目,发现命令行只提供生成controller和model的命令,没有提供make:validate命令,而5.1及以上版本是有的,对于使用tp5.0框架或者基于tp5.0的第三框架(如:FastAdmin)的项目非常不友好。做了个扩展来添加make:validate命令生成validate类。扩展的逻辑是从5.1框架源码直接复制过来的,所以验证器用法跟官方的一模一样,请放心使用。

github地址:github.com/jian1098/tp5-validate

注意:本扩展仅适用于Thinkphp5.0版本,更高的版本还是推荐使用自带的命令。

如何使用

1.安装扩展

composer require jian1098/tp5-validate:dev-master

2.注册命令

打开application/command.php,在数组中增加一行引入即可

return [
    'Jian1098\Tp5Validate\Command\Validate'
];

在命令行输入php think查看命令行列表,可以看到make:validate命令已添加

Think Console version 0.1
...
 make
  make:controller    Create a new resource controller class
  make:model         Create a new model class
  make:validate      Create a new validate class
...

3.创建验证器

根据5.1版本的文档创建即可

php think make:validate TestValidate

该命令会生成application/common/validate/TestValidate.php文件

4.控制器中调用验证器

  • 先在上面创建的TestValidate.php中填写验证规则和验证场景

    <?php
    
    namespace app\common\validate;
    
    use think\Validate;
    
    class TestValidate extends Validate
    {
        /**
             * 定义验证规则
             * 格式:'字段名'    =>    ['规则1','规则2'...]
             *
             * @var array
             */
            protected $rule = [
                'email' => 'require|email',
                'password' => 'require|min:6',
            ];
    
            /**
             * 定义错误信息
             * 格式:'字段名.规则名'    =>    '错误信息'
             *
             * @var array
             */
            protected $message = [
                'email.email' => '邮箱格式不正确',
            ];
    
            /**
             * 验证场景定义
             * 格式:'场景名称'    =>    ['字段1','字段2'...]
             *
             * @var array
             */
            protected $scene = [
                'login' => ['email', 'password'],
            ];
    }
  • 在控制器中验证

    <?php
    
    namespace app\index\controller;
    
    use think\Controller;
    
    class Test extends Controller
    {
        public function index()
        {
            $data = $this->request->param();
            $result = $this->validate($data,'TestValidate.login');
            if(true !== $result){
                // 验证失败 输出错误信息
                dump($result);
                exit();
            }
    
            echo 'success';
        }
    }
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!