当前位置:

首页 > 编程开发 > TP6.0 巧用模型获取器格式化前端树形控件数据【Vue/React】

TP6.0 巧用模型获取器格式化前端树形控件数据【Vue/React】

TP6模型获取器可在数据输出时自动生成树形控件所需字段,通过定义label、value、children等契约字段,配合append动态注入子节点,结合visible/hidden控制输出,实现前端直接绑定,避免反复映射与递归转换,提升前后端协作效率。

TP6.0 的模型获取器,说实话,很多人对它的理解还停留在“转状态文字”这个层面。其实它有个更实用的场景:在数据从模型里出来的时候,就把前端树形组件需要的那些字段“提前准备好”。这样一来,Vue 或 React 的 Tree 组件(比如 Element Plus 的 el-tree 或 Ant Design 的 Tree)拿到数据直接就能用,省去了前端反复映射、拼接、递归转换的麻烦。

TP6.0 巧用模型获取器格式化前端树形控件数据【Vue/React】

用获取器统一处理树节点显示字段

树形控件通常要求数据有 label、value、children 这类固定字段。但问题来了,数据库里存的可能是 name、id、pid。与其在控制器里手动写个 foreach 去改键名,不如在模型里用获取器把这些“契约字段”定义好:

  • 添加 getLabelAttr:返回 $this->name,或者带点前缀、后缀的格式化名称
  • 添加 getValueAttr:直接返回 $this->id,保证和后端逻辑一致
  • 添加 getDisabledAttr:根据 status 字段返回布尔值,控制节点是否可选

这样查出来的每个模型实例,天然就自带 label、value、disabled 这些属性。前端直接绑定就行,再也不用写一层 map 转换逻辑了。

用 append 动态注入 children 关系

TP6 默认查出来的是扁平数组(比如所有菜单项),但树组件需要的是嵌套结构。这里有个常见的误区:很多人直接在 PHP 层做递归组装,其实大可不必——那是后端过度干预前端渲染逻辑。更轻量的做法是:

  • 先用 withAttr 或获取器,把单条记录的展示字段准备好
  • 然后用 append(['children']) 告诉模型:“这个字段不存库,但我需要它”
  • 在模型里定义 getChildrenAttr 方法,内部调用 self::where('pid', $this->id)->select(),自动挂载子节点

不过得注意,这种方式适合层级浅、数据量不大的菜单或分类场景。如果数据量一大,还是建议后端直接返回已经组装好的树形 JSON,避免 N+1 查询带来的性能问题。

配合 visible / hidden 控制输出字段

前端树组件往往只需要几个字段,多余字段传过去纯属浪费带宽。TP6 的 visible 和 hidden 方法正好能派上用场:

  • $menu->visible(['label', 'value', 'disabled', 'children'])->toArray() —— 只暴露树所需字段
  • $menu->hidden(['password', 'token', 'update_time'])->toArray() —— 隐私或冗余字段一键过滤

尤其是在返回整个菜单树时(比如 Menu::tree()->toArray()),配合获取器加上 visible,输出的就是一份开箱即用的前端树数据,结构干净、语义清晰、没有冗余。

前后端约定好字段,避免运行时判断

很多项目里,前端要写一堆 node.label || node.name || node.title 这样的兼容逻辑。根源在于后端没统一字段出口。TP6 的获取器正好可以成为这个“约定枢纽”:

  • 所有树节点统一走 label 显示名、value 唯一标识、isLeaf 是否叶子节点(由 getIsLeafAttr 根据是否有子数据返回)
  • 前端不再关心原始字段名,只认这几个“契约字段”
  • 后续加图标、扩展属性(如 icon、href),也只在模型获取器里补,前端零改动

这种设计让前后端边界更清晰,也方便未来切换不同 UI 库(从 Element 切到 Arco、Naive),只要数据结构不变,树组件就能复用。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
作者最新文章
编程开发 React
相关文章 更多
codex安装windows 命令行完整操作教程
codex安装windows 命令行完整操作教程

详解Windows环境下安装OpenAI Codex CLI的步骤,包括WSL环境检查、Node.js/npm配置、npm全局安装命令及首次启动验证,适合开发者快速上手。

NativeRest环境配置要求与完整操作教程
NativeRest环境配置要求与完整操作教程

学习如何配置 NativeRest REST API 客户端。涵盖 Windows/macOS/Linux 安装后的工作区创建、环境变量管理、请求编辑及响应查看步骤,帮助开发者快速完成基础环境搭建与连通性测试。

CSS设置透明度的注意事项有哪些?opacity属性详解
CSS设置透明度的注意事项有哪些?opacity属性详解

深入解析CSS中设置透明度的核心属性opacity,剖析子元素继承、事件穿透、层叠上下文等关键注意事项,并提供与rgba、hsla的实用选型对比。

flutter页面传值到后台的方法及示例代码
flutter页面传值到后台的方法及示例代码

flutter页面传值到后台的完整实现方法及示例代码,帮助读者快速掌握相关技术要点。

Java 8至21新特性代码写法对比:Lambda、Record与Switch
Java 8至21新特性代码写法对比:Lambda、Record与Switch

本文通过具体的旧版与新版代码对比,详细剖析Java 8引入的Lambda表达式、Java 14/16引入的Record类,以及Java 12至21逐步演进完善的Switch表达式与模式匹配,展示代码简化路径与避坑要点。

AI智能体开发培训课程学什么及实战内容介绍
AI智能体开发培训课程学什么及实战内容介绍

系统梳理AI智能体开发培训的核心知识模块、技术栈选型与典型实战项目,解析低代码平台与纯代码框架的差异,提供从零构建可落地智能体的完整学习与实施路径。

Java子类未实现抽象方法编译错误修复指南
Java子类未实现抽象方法编译错误修复指南

针对Java开发中常见的“子类未实现抽象方法”编译错误,深入分析报错原因,提供重写实现、声明抽象子类两种标准修复路径,并总结参数签名、访问修饰符等典型避坑要点。

解决PHP递归报错:max_nesting_level限制与内存溢出处理
解决PHP递归报错:max_nesting_level限制与内存溢出处理

遇到PHP递归报错时,不要盲目调大max_nesting_level。本文教你区分Xdebug限制、内存耗尽和正则递归错误,提供代码级的终止条件优化与迭代替代方案,彻底解决栈溢出问题。

PHP递归中static变量与引用传递的常见陷阱及调试
PHP递归中static变量与引用传递的常见陷阱及调试

本文分析PHP递归中static变量导致的状态污染及引用传递引发的共享数据修改问题。提供具体的代码复现、缓存键设计建议及调试打印技巧,帮助开发者避免隐蔽的逻辑错误。

PHP递归性能优化技巧与迭代替代方案
PHP递归性能优化技巧与迭代替代方案

解析PHP递归函数在树形数据处理中的性能瓶颈,提供预加载数据消除I/O、使用显式栈替代深层递归的实战方案,帮助开发者在代码可读性与执行效率间做出合理取舍。

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件
macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

Mac软件 更多
photoshop
photoshop
Windows、macOS 、 iPad

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender
Windows、macOS 和 Linux

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

灵活计算器
灵活计算器
macOS/iOS/Android

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

WINDOWS 更多
3dmax(3ds max)
3dmax(3ds max)
Windows

Autodesk 3ds Max 是一款专业的三维建模、动画与渲染软件,广泛应用于建筑可视化、游戏开发、影视动画、广告设计和产品展示等领域。

photoshop
photoshop
Windows、macOS 、 iPad

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender
Windows、macOS 和 Linux

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。