前言
最近接手了个用FastAdmin(基于tp5)写的项目,发现命令行只提供生成controller和model
的命令,没有提供make:validate
命令,而5.1及以上版本是有的,对于使用tp5.0框架或者基于tp5.0的第三框架(如:FastAdmin)的项目非常不友好。做了个扩展来添加make:validate
命令生成validate类。扩展的逻辑是从5.1框架源码直接复制过来的,所以验证器用法跟官方的一模一样,请放心使用。
github地址:https://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
...makemake:controller Create a new resource controller classmake:model Create a new model classmake:validate Create a new validate class
...
3.创建验证器
根据5.1版本的文档创建即可
php think make:validate TestValidate
该命令会生成application/common/validate/TestValidate.php
文件
4.控制器中调用验证器
-
先在上面创建的
TestValidate.php
中填写验证规则和验证场景<?phpnamespace 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'],]; }
-
在控制器中验证
<?phpnamespace 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';} }