From 4debbf40844883c6c2dbd79b96655616348ac836 Mon Sep 17 00:00:00 2001 From: Shine Date: Tue, 20 Oct 2026 16:21:26 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=9D=83=E9=99=90?= =?UTF-8?q?/=E8=A7=92=E8=89=B2=E8=A1=A8=E5=8D=95=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E6=A0=91=E4=B8=8D=E6=B8=B2=E6=9F=93=E5=8F=8A=20flushMenuCache?= =?UTF-8?q?=20=E6=9C=AA=E5=AE=9A=E4=B9=89=E9=94=99=E8=AF=AF=20(#30)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题 1:multipleselect 模板新增的脚本使用 `$('.{{$selector}}')`,而 `$selector` 本身已是 `#form-id .field_xxx`,拼接后变为 `$('.#form-id .field_xxx')`,jQuery 抛出 选择器语法错误,导致同一批合并执行的脚本中断,其后的 tags、tree 等字段全部未初始化 (表现为“菜单”树为空、HTTP 路径显示为原生多选框)。 - 移除该独立脚本,将“有选中值时禁用占位隐藏 input”的逻辑并入 select-script 的 Dcat.init 回调(通过 `multiple` 参数开启),按 name 查找兄弟隐藏 input, 不再使用 `?.`,并避免 `off('change.select2')` 误删 select2 内部监听。 - 同一选择器不能重复 Dcat.init,否则会被 `initialized` 标记跳过,故不能单独注册。 问题 2:Form 的 saved 回调会被 `bindTo($model)` 重新绑定到模型实例, 回调内 `$this->flushMenuCache()` 实际调用的是 Permission/Role 模型上的方法, 抛出 `Call to undefined method ...::flushMenuCache()`。 - HasMenuTreeField 改为提供 `flushMenuCacheOnSaved(Form $form)`,回调内不依赖 `$this`。 - PermissionController、RoleController 统一改用该方法注册。 --- resources/views/form/multipleselect.blade.php | 8 +------- resources/views/form/select-script.blade.php | 17 +++++++++++++++++ src/Http/Controllers/HasMenuTreeField.php | 12 +++++++++--- src/Http/Controllers/PermissionController.php | 8 +++++--- src/Http/Controllers/RoleController.php | 8 +++++--- 5 files changed, 37 insertions(+), 16 deletions(-) diff --git a/resources/views/form/multipleselect.blade.php b/resources/views/form/multipleselect.blade.php index c6ed2e195..8e6683173 100755 --- a/resources/views/form/multipleselect.blade.php +++ b/resources/views/form/multipleselect.blade.php @@ -20,10 +20,4 @@ -@include('admin::form.select-script') - - +@include('admin::form.select-script', ['multiple' => true]) diff --git a/resources/views/form/select-script.blade.php b/resources/views/form/select-script.blade.php index 8e1ab33b3..085f40343 100644 --- a/resources/views/form/select-script.blade.php +++ b/resources/views/form/select-script.blade.php @@ -4,6 +4,23 @@