Dcat-Plus Admin v3.0.14 → v3.0.18 发布:异步表格全面进化,弹窗体验根治
Dcat-Plus Admin v3.0.14 → v3.0.18 发布:异步表格全面进化,弹窗体验根治
基于 Laravel + Bootstrap 的极速后台开发框架,只需很少的代码即可快速构建一个功能完善的高颜值后台系统。
dcat-plus/laravel-admin 一次发布 v3.0.14 → v3.0.18 五个版本的累积更新(2.x 版本线同步发布 v2.0.31 → v2.0.35,内容完全一致)。本次共 10 项更新,主线只有一句话:把「弹窗异步表格」从需要各种 workaround 的半成品,做成开箱即用的完整体验。逐条说明如下。
🚀 升级方式
# 3.x
composer require dcat-plus/laravel-admin:^3.0
# 2.x(内容一致)
composer require dcat-plus/laravel-admin:^2.0
环境要求:PHP >= 8.3,Laravel 12 ~ 13。
更新一:异步表格行操作自动适配(弹窗编辑/弹窗查看)
说明:弹窗异步表格(Grid\LazyRenderable)里的整页编辑/查看会离开当前弹窗上下文且不可回退。现在用户未自定义 actions() 时自动适配:整页编辑/查看自动禁用,替换为快捷编辑(弹窗表单)与弹窗查看(viewOnly 弹层加载详情页,最小化渲染无侧栏)。
// 异步表格 renderable 里——什么都不用写
// 行操作自动变为:快捷编辑(弹窗)+ 弹窗查看 + 删除
用户已自定义 actions() 闭包时自动适配让位(尊重配置)。
更新二:默认启用弹窗创建,两行代码变零行
说明:弹窗创建此前需要手写两行,现已默认化——异步表格自动带「新增」弹窗创建按钮:
// 以前需要写:
$grid->showCreateButton();
$grid->enableDialogCreate();
// 现在这两行就是默认行为,直接省略
用户显式 $grid->disableCreateButton() 时尊重配置不自动启用。
更新三:行删除/批量删除后不跳转、表格原地重载
说明:弹窗异步表格里删除并确认后,此前会整页跳转到资源列表页(data-redirect 定向重载),弹窗上下文丢失。现在不跳转——删除确认后异步表格原地重载,被删行消失,弹窗保持打开。
删除确认框中的点击延续上下文(无时间窗),不受确认环节耗时影响;
批量删除同样生效;非弹窗场景(展开行/独立异步表格)原地刷新,普通页面行为不变。
更新四:弹窗查看支持自定义弹层尺寸
说明:详情内容较多时,小弹窗看不全。新增尺寸配置(对标原 modal->xl()),两种写法:
// 方式一:网格级配置(异步表格自动适配透传)
$grid->dialogViewSize('xl');
// 方式二:actions 闭包内
$grid->actions(function (Grid\Displayers\Actions $actions) {
$actions->dialogView('xl'); // 预设 'sm'(600px×60%) / 'lg'(800px×80%) / 'xl'(1140px×90%)
// 或自定义:
$actions->dialogView(['800px', '600px']); // 数组
$actions->dialogView('80%'); // 宽度字符串(高默认 80%)
});
更新五:新增网格级弹窗查看开关 enableDialogView()
说明:页面级数据表格(非异步表格)也可开启弹窗查看——行操作「查看」以弹层打开详情页(最小化渲染、无侧栏导航),不离开当前页面:
$grid->enableDialogView(); // 查看 → 弹窗详情
$grid->dialogViewSize('lg'); // 可选:尺寸
实现于 Actions::renderView:保持原「查看」位置渲染,disableView() 显式禁用时尊重配置。
更新六:Markdown 编辑器粘贴图片自动上传
说明:在 Markdown 编辑器内直接 Ctrl+V / Cmd+V 粘贴截图,图片自动上传并在光标处插入  语法:
走编辑器原有
imageUploadURL通道,disk()/imageDirectory()配置与白名单校验照常生效,开箱即用;一次粘贴多张图逐张上传,toast 提示进度,纯文本粘贴不受影响。
更新七:Markdown 全屏按钮悬浮右上角
说明:「全屏」按钮从 40 多个工具按钮堆里移出,悬浮在编辑器右上角——一眼可见、一点即进;全屏状态下再点即出(ESC 依然有效);适配深色模式,不遮挡原有工具。
修复(三项环境类顽疾根治)
修复一:嵌套弹窗六死因根治 + 遮罩残留清扫
说明:Bootstrap 4.3.1 原生不支持「modal 内再开 modal」(如异步表格弹窗里再开表单弹窗/快捷编辑),存在六个死因,全部根治:
| # | 死因 | 表现 | 修复 |
|—|——|——|——|
| 1 | z-index 固定撑不起多层 | 层级错乱、遮罩压住弹窗 | z-index 按打开层数递增,backdrop 跟随本层之下 |
| 2 | 内层 fade 动画回调不触发 | _isTransitioning 卡死,内层关不掉 | 内层自动去 fade |
| 3 | [data-dismiss] 委托冒泡 | 点内层关闭按钮误关外层 | 内层截断冒泡 |
| 4 | 内层事件冒泡误触外层 onShow | 内层一闪就关 | $.fn.on modal 四件套事件加 target 守卫 |
| 5 | 内层被外层 stacking context 困住 | 遮罩盖住全部内容 | show 时移到 body 下脱离外层上下文 |
| 6 | 筛选面板拦截 .modal 内点击冒泡 | 弹窗内所有开弹窗按钮失灵 | 改为关闭筛选面板的判断里排除 .modal |
另含:内层提交智能局部刷新(只关内层 + 刷新外层异步表格,不整页)、modal-open 状态恢复、backdrop 兜底清理、viewOnly 关闭遮罩残留清扫(兼容 iframe-tabs 顶层窗口,历史泄漏遮罩一次切页清掉)。
修复二:七牛云存储兼容 Laravel 10+
说明:安装 zgldh/qiniu-laravel-storage 的项目,媒体管理器浏览七牛盘直接 500——第三方包 listContents() 返回 Flysystem v1 数组,Laravel 10+ 强类型过滤必然 TypeError。
补丁内置进 dcat-plus(未安装 zgldh 的项目零开销):listContents() 返回 StorageAttributes、marker 分页拉全、子目录还原、putTime 转秒、域名强制 https。宿主自定义驱动在自己 App::booted 里再次 Storage::extend('qiniu') 即可。
修复三:skills 文档补齐数据详情页参考
新增 references/show-detail.md:Show 详情页完整 API(字段显示方法全目录、富文本识别、关联关系、card/fieldset 布局、工具栏、__call 魔术助手陷阱),并记录 Grid::resource() 只读 getter、model()->with() 可变参数静默丢弃等高频坑。
📦 2.x 用户
v2.0.31 → v2.0.35 五个版本与 3.x 逐版同步,内容完全一致。
🔗 链接
在线演示(laravel13 + php8.4,3.x):laravel13.dcat-admin.com/admin
官方网站 / 文档:www.dcat-admin.com
💬 交流与支持
加作者微信 Q3664839,加入 dcat-admin 开发交流群;
欢迎Star / 提 Issue / 提 PR,也欢迎赞助开源,让 Dcat-Plus 走得更远。
Dcat-Plus Admin —— 汇聚 Filament、Laravel-Admin、Dcat-Admin 优点于一身的 Laravel 极速开发框架。写更少的代码,交更棒的活。
本作品采用《CC 协议》,转载必须注明作者和本文链接
关于 LearnKu
推荐文章: