mirror of
https://gitee.com/ulthon/ulthon_admin.git
synced 2026-08-30 12:45:32 +08:00
fix(auth): 修复角色分配用户列表layui filter传参导致参数绑定错误
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -101,9 +101,43 @@ class AuthBase extends AdminController
|
||||
|
||||
/**
|
||||
* @NodeAnotation(title="分配用户")
|
||||
*
|
||||
* 兼容 layui table 的 filter 传参:ua.table 把 where:{id:roleId} 放入
|
||||
* filter JSON(filter={"id":"xxx"})而非顶层 query 参数。若 $id 无默认值,
|
||||
* ThinkPHP 方法参数绑定会从顶层 query 找 id 失败报"方法参数错误:id"。
|
||||
* 这里给默认值 null,再从 query / filter 兜底解析;Ajax 时从 filter/op
|
||||
* 移除 id(角色ID不是用户搜索条件),防 buildTableParames 误用。
|
||||
*/
|
||||
public function assignUsers($id)
|
||||
public function assignUsers($id = null)
|
||||
{
|
||||
if (empty($id)) {
|
||||
// 优先从顶层 query 取(iframe 页面加载时的 ?id=xxx)
|
||||
$id = $this->request->param('id');
|
||||
// 再从 filter JSON 取(table Ajax 请求时的 filter={"id":"xxx"})
|
||||
if (empty($id) && $this->request->isAjax()) {
|
||||
$filter = json_decode($this->request->param('filter', '{}'), true) ?: [];
|
||||
$id = $filter['id'] ?? '';
|
||||
}
|
||||
if (empty($id)) {
|
||||
$this->error('参数错误:缺少角色ID');
|
||||
}
|
||||
}
|
||||
|
||||
// Ajax 时从 filter/op 移除 id(它是角色ID,不是用户搜索条件),
|
||||
// 防止 buildTableParames 把它当用户 id 的 WHERE 条件。
|
||||
// 注意:Request::withGet 是整体覆盖($this->get = $get)而非合并,
|
||||
// 必须先取全量 GET 再写回,否则 page/limit 丢失导致翻页失效。
|
||||
if ($this->request->isAjax()) {
|
||||
$get = $this->request->get('', null);
|
||||
$filter = isset($get['filter']) ? (json_decode($get['filter'], true) ?: []) : [];
|
||||
unset($filter['id']);
|
||||
$get['filter'] = json_encode($filter, JSON_UNESCAPED_UNICODE);
|
||||
$op = isset($get['op']) ? (json_decode($get['op'], true) ?: []) : [];
|
||||
unset($op['id']);
|
||||
$get['op'] = json_encode($op, JSON_UNESCAPED_UNICODE);
|
||||
$this->request->withGet($get);
|
||||
}
|
||||
|
||||
$row = $this->model->find($id);
|
||||
empty($row) && $this->error('数据不存在');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user