mirror of
https://gitee.com/zoujingli/ThinkAdmin.git
synced 2026-06-07 12:38:11 +08:00
将 v8 重构分支中残留的 ThinkAdminDeveloper 文本统一调整为 ThinkAdmin,避免迁移到主仓库后继续暴露旧开发仓库名称。 主要内容: - 更新 README 标题与项目描述。 - 统一 PHP 文件头注释中的项目标识。 - 同步调整测试、配置、插件与文档中的旧仓库名称文本。 - 保持旧包删除说明与架构边界测试语义不变,只清理品牌名称残留。
86 lines
2.8 KiB
PHP
86 lines
2.8 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
/**
|
|
* +----------------------------------------------------------------------
|
|
* | ThinkAdmin Plugin
|
|
* +----------------------------------------------------------------------
|
|
* | Copyright (c) 2014~2026 ThinkAdmin [ thinkadmin.top ]
|
|
* +----------------------------------------------------------------------
|
|
* | Official Website: https://thinkadmin.top
|
|
* +----------------------------------------------------------------------
|
|
* | Licensed: https://mit-license.org
|
|
* | Disclaimer: https://thinkadmin.top/disclaimer
|
|
* | Vip Rights: https://thinkadmin.top/vip-introduce
|
|
* +----------------------------------------------------------------------
|
|
* | Gitee Repository: https://gitee.com/zoujingli/ThinkAdmin
|
|
* | Github Repository: https://github.com/zoujingli/ThinkAdmin
|
|
* +----------------------------------------------------------------------
|
|
*/
|
|
|
|
namespace think\admin\helper;
|
|
|
|
use think\admin\Helper;
|
|
use think\admin\model\QueryFactory;
|
|
use think\db\BaseQuery;
|
|
use think\db\exception\DbException;
|
|
use think\db\Query;
|
|
use think\Model;
|
|
|
|
/**
|
|
* 数据更新管理器.
|
|
* @class SaveHelper
|
|
*/
|
|
class SaveHelper extends Helper
|
|
{
|
|
/**
|
|
* 逻辑器初始化.
|
|
* @param array $edata 表单扩展数据
|
|
* @param string $field 数据对象主键
|
|
* @param mixed $where 额外更新条件
|
|
* @return bool|void
|
|
* @throws DbException
|
|
*/
|
|
public function init(BaseQuery|Model|string $dbQuery, array $edata = [], string $field = '', $where = [])
|
|
{
|
|
$query = QueryFactory::build($dbQuery);
|
|
if (!$query instanceof Query) {
|
|
throw new \InvalidArgumentException('SaveHelper only supports relational Query instances.');
|
|
}
|
|
$field = $field ?: ($query->getPk() ?: 'id');
|
|
$edata = $edata ?: $this->app->request->post();
|
|
$value = $this->app->request->post($field);
|
|
|
|
// 主键限制处理
|
|
if (!isset($where[$field]) && !is_null($value)) {
|
|
$query->whereIn($field, str2arr(strval($value)));
|
|
if (isset($edata)) {
|
|
unset($edata[$field]);
|
|
}
|
|
}
|
|
|
|
// 前置回调处理
|
|
if ($this->class->callback('_save_filter', $query, $edata) === false) {
|
|
return false;
|
|
}
|
|
|
|
// 检查原始数据
|
|
$query->master()->where($where)->update($edata);
|
|
|
|
// 模型自定义事件回调
|
|
$model = $query->getModel();
|
|
if ($model instanceof \think\admin\Model) {
|
|
$model->onAdminSave(strval($value));
|
|
}
|
|
|
|
// 结果回调处理
|
|
$result = true;
|
|
if ($this->class->callback('_save_result', $result, $model) === false) {
|
|
return $result;
|
|
}
|
|
|
|
// 回复前端结果
|
|
$this->class->success('数据保存成功!', '');
|
|
}
|
|
}
|