創建驗證器基類 app/validate/BaseValidate.php
<?php namespace app\validate; use think\Validate; use app\lib\exception\BaseException; class BaseValidate extends Validate { public function goCheck($scene = false) { $params = request()->param();//獲取所有參數 // 開始驗證 $check = $scene ? $this->scene($scene)->check($params) : $this->check($params); if (!$this->check($params)) { throw new BaseException([ 'msg' => $this->getError(), 'code' => 400, 'statusCode' => 400, ]); } return true; } }
創建自定義驗證器 app/validate/CeshiValidate.php
<?php declare (strict_types = 1); namespace app\validate; class CeshiValidate extends BaseValidate { /** * 定義驗證規則 * 格式:'字段名' => ['規則1','規則2'...] * * @var array */ protected $rule = [ 'username' => 'require', 'email' => 'require|email', ]; /** * 定義錯誤信息 * 格式:'字段名.規則名' => '錯誤信息' * * @var array */ protected $message = [ 'username.require' => '用戶名不能為空', 'email.require' => '郵箱不能為空', 'email.email' => '郵箱格式不正確', ]; protected $scene = [ 'username' => ['username'], 'email' => ['email'], ]; }
控制器中使用驗證器 app/index/controller/Index.php
<?php namespace app\index\controller; use app\BaseController; use think\facade\Request; use app\lib\exception\BaseException; use app\validate\CeshiValidate; class Index extends BaseController { public function index() { // throw (new BaseException(['code'=>400,'statusCode'=>404,'msg'=>'異常'])); // return '111'; $scene = ''; $scene1 = 'username'; $scene2 = 'email'; (new CeshiValidate())->goCheck($scene2); } }