feat(controller): add app base controller

Made-with: Cursor
This commit is contained in:
apple
2026-04-29 17:10:43 +08:00
parent 083c51ed7e
commit 05b0d43dd8

View File

@@ -0,0 +1,78 @@
<?php
// +----------------------------------------------------------------------
// | Author: ScottPan Team
// +----------------------------------------------------------------------
namespace app\common\controller;
use app\Request;
use think\App;
use think\Response;
/**
* 项目自有控制器基类,不依赖 CRMEB 商业授权基础类。
*/
abstract class AppBaseController
{
/**
* @var App
*/
protected App $app;
/**
* @var Request
*/
protected Request $request;
/**
* 是否批量验证
* @var bool
*/
protected bool $batchValidate = false;
public function __construct(App $app)
{
$this->app = $app;
$this->request = $app->request;
$this->initialize();
}
/**
* 初始化钩子,子类可覆盖。
*/
protected function initialize()
{
}
protected function success($message = 'ok', array $data = []): Response
{
return app('json')->success($message, $data);
}
protected function fail($message = 'fail', array $data = []): Response
{
return app('json')->fail($message, $data);
}
/**
* 兼容项目控制器中 `$this->validate($data, ValidateClass::class, 'scene')` 的调用方式。
*
* @param array $data
* @param string|array $validate
* @param string|array|null $scene
* @return bool
*/
protected function validate(array $data, $validate, $scene = null): bool
{
$validator = validate($validate)->batch($this->batchValidate);
if (is_string($scene) && $scene !== '') {
$validator->scene($scene);
} elseif (is_array($scene)) {
$validator->message($scene);
}
return $validator->check($data);
}
}