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.

129 lines
3.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
declare (strict_types = 1);
namespace app\adminapi;
use think\App;
use think\Response;
// use think\exception\ValidateException;
// use think\Validate;
/**
* 控制器基礎類
*/
abstract class ApiController
{
/**
* 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()
{
// header('Access-Control-Allow-Origin: *');
// //允許的請求頭信息
// header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization");
// //允許的請求類型
// header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS, PATCH');
// //允許攜帶證書式訪問攜帶cookie
// header('Access-Control-Allow-Credentials:true');
}
/**
* 驗證數據
* @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);
}
public function Success($data,$message='請求成功',$code=200,$type='json',$header=[]){
$result = [
'code' => $code,
'message' => $message,
'time'=>time(),
'data'=>$data
];
return Response::create($result,$type)->header($header);
}
public function Error($data,$message='請求失敗',$code=500,$type='json',$header=[]){
$result = [
'code' => $code,
'message' => $message,
'time'=>time(),
'data'=>$data
];
return Response::create($result,$type)->header($header);
}
}