mirror of
https://gitee.com/ulthon/ulthon_admin.git
synced 2026-07-01 15:32:48 +08:00
feat: 实现后台请求兼容接口的模式
This commit is contained in:
@@ -6,9 +6,11 @@ use app\admin\model\SystemAdmin;
|
||||
use app\BaseController;
|
||||
use app\common\constants\AdminConstant;
|
||||
use app\common\service\AuthService;
|
||||
use think\facade\Config;
|
||||
use think\facade\Env;
|
||||
use think\facade\View;
|
||||
use think\Model;
|
||||
use think\response\Json;
|
||||
use think\template\exception\TemplateNotFoundException;
|
||||
use think\Validate;
|
||||
|
||||
@@ -86,6 +88,8 @@ class AdminControllerBase extends BaseController
|
||||
*/
|
||||
private $dataBrage = [];
|
||||
|
||||
private $internalDataFields = [];
|
||||
|
||||
protected $validateRule = null;
|
||||
|
||||
protected $validateMessage = [];
|
||||
@@ -140,8 +144,23 @@ class AdminControllerBase extends BaseController
|
||||
*/
|
||||
public function assign($name, $value = null, $isAppendToDataBrage = false, $forceObject = false)
|
||||
{
|
||||
if ($isAppendToDataBrage) {
|
||||
$this->setDataBrage($name, $value, $forceObject);
|
||||
if (is_array($name)) {
|
||||
$forceObject = $isAppendToDataBrage;
|
||||
$isAppendToDataBrage = $value;
|
||||
|
||||
if ($isAppendToDataBrage === true) {
|
||||
foreach ($name as $k => $v) {
|
||||
$this->setDataBrage($k, $v, $forceObject);
|
||||
}
|
||||
} elseif ($isAppendToDataBrage === -1) {
|
||||
$this->internalDataFields = array_merge($this->internalDataFields, array_keys($name));
|
||||
}
|
||||
} else {
|
||||
if ($isAppendToDataBrage === true) {
|
||||
$this->setDataBrage($name, $value, $forceObject);
|
||||
} elseif ($isAppendToDataBrage === -1) {
|
||||
$this->internalDataFields[] = $name;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->app->view->assign($name, $value);
|
||||
@@ -181,8 +200,7 @@ class AdminControllerBase extends BaseController
|
||||
public function fetch($template = '', $vars = [])
|
||||
{
|
||||
$this->assign('data_brage', json_encode($this->dataBrage));
|
||||
|
||||
$vars['content_js'] = $this->fetchJS($template);
|
||||
$this->assign('content_js', $this->fetchJS($template), -1);
|
||||
|
||||
$content_main = View::layout($this->layout)
|
||||
->config([
|
||||
@@ -191,10 +209,56 @@ class AdminControllerBase extends BaseController
|
||||
|
||||
$html = '';
|
||||
$html .= $content_main;
|
||||
if ($this->checkParseApi()) {
|
||||
$data = $this->parseInternalDataFields(View::fetchData());
|
||||
$r = json_message($data);
|
||||
|
||||
return $r;
|
||||
}
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
public function checkParseApi()
|
||||
{
|
||||
if (Config::get('app.auto_parse_api')) {
|
||||
if ($this->request->isJsonPure() && $this->request->param('get_page_data')) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理数据,过滤内部字段.
|
||||
* @param array $data 内部数据
|
||||
* @return array
|
||||
*/
|
||||
public function parseInternalDataFields($data)
|
||||
{
|
||||
foreach ($this->internalDataFields as $field) {
|
||||
if (isset($data[$field])) {
|
||||
unset($data[$field]);
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($data['data_brage'])) {
|
||||
$data_brage = json_decode($data['data_brage'], true);
|
||||
|
||||
// 如果data_brage中的key在data中存在,则删掉data_brage中的
|
||||
foreach ($data as $key => $value) {
|
||||
if (isset($data_brage[$key])) {
|
||||
unset($data_brage[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
$data['data_brage'] = $data_brage;
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置dataBrage数据.
|
||||
*
|
||||
@@ -205,6 +269,14 @@ class AdminControllerBase extends BaseController
|
||||
*/
|
||||
public function setDataBrage($name, $value, $forceObject = false)
|
||||
{
|
||||
if (is_array($name)) {
|
||||
foreach ($name as $k => $v) {
|
||||
$this->setDataBrage($k, $v, $forceObject);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
if ($forceObject && !is_object($value)) {
|
||||
$value = (object) $value;
|
||||
}
|
||||
@@ -339,7 +411,7 @@ class AdminControllerBase extends BaseController
|
||||
|
||||
/**
|
||||
* 下拉选择列表.
|
||||
* @return \think\response\Json
|
||||
* @return Json
|
||||
*/
|
||||
public function selectList()
|
||||
{
|
||||
@@ -378,7 +450,7 @@ class AdminControllerBase extends BaseController
|
||||
'pageKeyName' => $this->pageKeyName,
|
||||
];
|
||||
|
||||
View::assign($data);
|
||||
$this->assign($data, -1);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -443,7 +515,7 @@ class AdminControllerBase extends BaseController
|
||||
|
||||
$this->sessionAdmin = $model_admin;
|
||||
|
||||
$this->assign('session_admin', $model_admin);
|
||||
$this->assign('session_admin', $model_admin, -1);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user