You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							126 lines
						
					
					
						
							3.1 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							126 lines
						
					
					
						
							3.1 KiB
						
					
					
				| <?php | |
| declare (strict_types = 1); | |
| 
 | |
| namespace app; | |
| 
 | |
| use think\App; | |
| use think\exception\ValidateException; | |
| use think\Validate; | |
| 
 | |
| /** | |
|  * 控制器基础类 | |
|  */ | |
| abstract class BaseController | |
| { | |
|     /** | |
|      * Request实例 | |
|      * @var \think\Request | |
|      */ | |
|     protected $request; | |
| 
 | |
|     /** | |
|      * 应用实例 | |
|      * @var \think\App | |
|      */ | |
|     protected $app; | |
| 
 | |
|     /** | |
|      * 是否批量验证 | |
|      * @var bool | |
|      */ | |
|     protected $batchValidate = false; | |
| 
 | |
|     /** | |
|      * 控制器中间件 | |
|      * @var array | |
|      */ | |
|     protected $middleware = []; | |
| 
 | |
|     /** | |
|      * 构造方法 | |
|      * @access public | |
|      * @param  App  $app  应用对象 | |
|      */ | |
|     public function __construct(App $app) | |
|     { | |
|         $this->app     = $app; | |
|         $this->request = $this->app->request; | |
| 
 | |
|         // 控制器初始化 | |
|         $this->initialize(); | |
|     } | |
| 
 | |
|     // 初始化 | |
|     protected function initialize() | |
|     {} | |
| 
 | |
|     /** | |
|      * 验证数据 | |
|      * @access protected | |
|      * @param  array        $data     数据 | |
|      * @param  string|array $validate 验证器名或者验证规则数组 | |
|      * @param  array        $message  提示信息 | |
|      * @param  bool         $batch    是否批量验证 | |
|      * @return array|string|true | |
|      * @throws ValidateException | |
|      */ | |
|     protected function validate(array $data, $validate, array $message = [], bool $batch = false) | |
|     { | |
|         if (is_array($validate)) { | |
|             $v = new Validate(); | |
|             $v->rule($validate); | |
|         } else { | |
|             if (strpos($validate, '.')) { | |
|                 // 支持场景 | |
|                 [$validate, $scene] = explode('.', $validate); | |
|             } | |
|             $class = false !== strpos($validate, '\\') ? $validate : $this->app->parseClass('validate', $validate); | |
|             $v     = new $class(); | |
|             if (!empty($scene)) { | |
|                 $v->scene($scene); | |
|             } | |
|         } | |
| 
 | |
|         $v->message($message); | |
| 
 | |
|         // 是否批量验证 | |
|         if ($batch || $this->batchValidate) { | |
|             $v->batch(true); | |
|         } | |
| 
 | |
|         return $v->failException(true)->check($data); | |
|     } | |
| 
 | |
|     // 获取数组指定key的value | |
|     function getValByKey(string $key, array $arr, $default = false) | |
|     { | |
|         return array_key_exists($key, $arr) ? $arr[$key] : $default; | |
|     } | |
| 
 | |
|     // 应用公共文件 | |
|     function ApiException($msg = '请求错误',$errorCode = 20000,$statusCode = 404) | |
|     { | |
|         // abort($errorCode, $msg,[ | |
|         //     'statusCode' => $statusCode | |
|         // ]); | |
|         header('Access-Control-Allow-Origin:*'); | |
|         header('Access-Control-Allow-Headers:content-type,token'); | |
|         header('Access-Control-Request-Method:GET,POST,DELETE'); | |
|         if (strtoupper($_SERVER['REQUEST_METHOD']) == 'OPTIONS') { | |
|             exit; | |
|         } | |
|         throw new \app\lib\exception\BaseException(['code' => $errorCode, 'message' => $msg, 'data' => [ | |
|             'statusCode' => $statusCode | |
|         ]]); | |
|     } | |
| 
 | |
|     // 成功返回 | |
|     function showSuccess($data = '',$msg = 'ok',$code = 200){ | |
|         return json([ 'msg' => $msg, 'data' => $data,'code'=>$code],$code); | |
|     } | |
| 
 | |
|     function showError($msg = 'error',$code = 201){ | |
|         return json([ 'msg' => $msg ],$code); | |
|     } | |
| 
 | |
| }
 |