//生成资源控制器 php think make:controller app\index\controller\User //路由定义 Route::resource('user','index/user')->middleware('Check'); //生成验证规则 php think make:validate index/User namespace app\index\validate; use think\Validate; class User extends Validate protected $rule = [ 'user_name' => 'require|alphaNum', 'password' => 'require', ]; protected $message = [ 'user_name.require' => '请输入账号', 'user_name.alphaNum' => '账号只能是数字和字母', 'password.require' => '请输入密码', ]; protected $scene = [ 'login' => ['user_name', 'password'], 'register' => ['user_name', 'password'], ]; //生成中间件 php think make:middleware Check <?php namespace app\http\middleware; use think\Controller; class Check extends Controller { public function handle($request, \Closure $next) { //获取当前参数 $params = $request->param(); //获取访问模块 $module = $request->module(); //获取访问控制器 $controller = ucfirst($request->controller()); //获取操作名,用于验证场景scene $scene = $request->action(); $validate = "app\\" . $module . "\\validate\\" . $controller; //仅当验证器存在时 进行校验 if (class_exists($validate)) { $v = $this->app->validate($validate); if ($v->hasScene($scene)) { //仅当存在验证场景才校验 $result = $this->validate($params, $validate . '.' . $scene); if (true !== $result) { //校验不通过则直接返回错误信息 return json(['code' => -1, 'msg' => $result]); } } } return $next($request); } }
Thinkphp 中间件结合Validate
猜你喜欢
转载自www.cnblogs.com/ssx314/p/10232422.html
今日推荐
周排行