当前位置: 首页 > news >正文

模型树实操

很多时候,数据都是有层级和分类的,使用laravel的Dcat框架,可以快速搭建一个结构清晰、且可以鼠标拖拽排序的后台;先上例子更直观:
在这里插入图片描述
这里是Dcat的模型树使用文档,戳一下;

重点注意事项有:

  • 1、数据库表的parent_id字段一定要默认为0,
  • 2、数据库表parent_id、order、title一定要有,不过这三个字段支持修改,可在Model中进行修改;其它字段没有要求
<?phpnamespace App\Models\Demo;use Dcat\Admin\Traits\ModelTree;
use Illuminate\Database\Eloquent\Model;class Category extends Model
{use ModelTree;protected $table = 'demo_categories';// 父级ID字段名称,默认值为 parent_idprotected $parentColumn = 'pid';// 排序字段名称,默认值为 orderprotected $orderColumn = 'sort';// 标题字段名称,默认值为 titleprotected $titleColumn = 'name';// Since v2.1.6-beta,定义depthColumn属性后,将会在数据表保存当前行的层级protected $depthColumn = 'depth';
}
tree的使用

去 Dcat 后台用代码生成工具生成 Controller 文件,生成以后直接用我下面的代码覆盖:

<?phpnamespace App\Admin\Controllers\SecondPhase;use App\Models\CancerDetectionMethods;
use App\Models\CancerDetectionSamples;
use App\Models\CancerRecommendSearch;
use App\Models\CancerSiteInfo;
use App\Models\CancerSiteMethods;
use App\Models\CancerTargets;
use App\Models\LsDicLabel;
use App\Services\CancerTargetTreesService;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Http\Controllers\AdminController;
use Dcat\Admin\Layout\Column;
use Dcat\Admin\Layout\Content;
use Dcat\Admin\Layout\Row;
use Dcat\Admin\Tree;
use Dcat\Admin\Widgets\Box;
use Dcat\Admin\Widgets\Form as WidgetForm;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;class CancerTargetsController extends AdminController
{public function index(Content $content){return $content->title('模型树')->body(function (Row $row) {$row->column(6, $this->treeView()->render());$row->column(6, function (Column $column) {$form = new WidgetForm();$form->action(admin_url('cancer-target-tree'));$form->select('parent_id', '父级')->options(CancerTargets::selectOptions());$form->text('title', '名称')->required();$column->append(Box::make('新增', $form));});});}protected function treeView(){return new Tree(new CancerTargets(), function (Tree $tree) {$tree->disableCreateButton();$tree->disableQuickCreateButton();$tree->disableEditButton();$tree->maxDepth(4);$tree->branch(function ($branch) {$payload = $branch['id'].' - '.$branch['title'];if ($branch['level'] === 4) {$url     = admin_url('/cancer-site/'.$branch['id'].'/edit');$payload .= <<<HTML
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="$url" class="dd-nodrag">位点管理</a>
HTML;}return $payload;});});}protected function form(){return Form::make(new CancerTargets(), function (Form $form) {$form->model()->with(['methods:id, name',]);$form->display('id');$form->select('parent_id', '父级')->options(CancerTargets::selectOptions())->saving(function ($v) {return (int)$v;});$form->text('title', '名称')->required();$form->hidden('level', '等级');$form->disableViewButton();$form->footer(function ($footer) {// 去掉`重置`按钮$footer->disableReset();// 去掉`查看`checkbox$footer->disableViewCheck();// 去掉`继续编辑`checkbox$footer->disableEditingCheck();// 去掉`继续创建`checkbox$footer->disableCreatingCheck();// 设置`查看`默认选中$footer->defaultViewChecked();// 设置`继续编辑`默认选中$footer->defaultEditingChecked();// 设置`继续创建`默认选中$footer->defaultCreatingChecked();});});}}

大功告成

相关文章:

模型树实操

很多时候&#xff0c;数据都是有层级和分类的&#xff0c;使用laravel的Dcat框架&#xff0c;可以快速搭建一个结构清晰、且可以鼠标拖拽排序的后台&#xff1b;先上例子更直观&#xff1a; 这里是Dcat的模型树使用文档&#xff0c;戳一下&#xff1b; 重点注意事项有&#x…...

html table+css实现可编辑表格

要实现可编辑的 HTML 表格&#xff0c;你可以使用 JavaScript 和 HTML5 的 contenteditable 属性。 <!DOCTYPE html> <html> <head><style>table {border-collapse: collapse;width: 100%;}th, td {border: 1px solid black;padding: 8px;text-align:…...

c语言:计算1+2+3……+n的和|练习题

一、题目 输入一个数n&#xff0c;计算123……n的和 二、代码截图【带注释】 三、源代码【带注释】 #include int main() { int num0; printf("请输入要运算的数:"); scanf("%d",&num); sumResult(num);//相加结果函数 } //计算打印…...

Yolov5水果分类识别+pyqt交互式界面

Yolov5 Fruits Detector Yolov5 是一种先进的目标检测算法&#xff0c;可以应用于水果分类识别任务。结合 PyQT 框架&#xff0c;可以创建一个交互式界面&#xff0c;使用户能够方便地上传图片并获取水果分类结果。以下将详细阐述 Yolov5 水果分类识别和 PyQT 交互式界面的实现…...

正式环境和sandbox中的RecordTypeId不一样应该怎么办

如果在 Salesforce 正式环境和 Sandbox 中&#xff0c;RecordTypeId 不一样&#xff0c;通常需要在代码或配置中进行适配&#xff0c;以确保代码在不同环境中的兼容性。以下是一些常见的方法&#xff1a; 使用自定义设置或自定义标签&#xff1a; 创建自定义设置或自定义标签来…...

7种常见的网络安全设备及其功能

网络安全设备在现代网络环境中起着至关重要的作用&#xff0c;帮助保护个人和组织免受恶意攻击。本文将介绍7种常见的网络安全设备&#xff0c;包括防火墙、入侵检测系统、反病毒软件、数据加密设备、虚拟私人网络、安全信息和事件管理系统以及网络访问控制设备&#xff0c;并详…...

vue3实现pinia仓库状态持久化

使用 pinia-plugin-persistedstate 实现pinia仓库状态持久化 安装 pnpm i pinia-plugin-persistedstate # or npm i pinia-plugin-persistedstate # or yarn add pinia-plugin-persistedstatemain.ts引入 import persist from pinia-plugin-persistedstate const app creat…...

Node.js(三)-模块的加载机制

1. 优先从缓存中加载 模块在第一次加载后会被缓存&#xff0c;这就意味着多次调用require()不会导致模块的代码被执行多次。 注意:不论是内置模块、用户自定义模块、还是第三方模块&#xff0c;它们都会优先从缓存中加载&#xff0c;从而提高模块的加载效率. 2. 内置模块的加…...

函数

1、概述 1.1、函数分类 1&#xff09;系统函数&#xff08;库函数&#xff09; 2&#xff09;用户定义函数 1.2、函数的作用 降低代码重复率让程序更加模块化&#xff0c;利于阅读、修改和完善 1.3、函数的调用&#xff1a;随机数 函数调用 5 要素&#xff1a; 头文件&…...

第四周:机器学习知识点回顾

前言&#xff1a; 讲真&#xff0c;复习这块我是比较头大的&#xff0c;之前的线代、高数、概率论、西瓜书、樱花书、NG的系列课程、李宏毅李沐等等等等…那可是花了三年学习佳实践下来的&#xff0c;现在一想脑子里就剩下几个名词就觉得废柴一个了&#xff0c;朋友们有没有同感…...

韩版传奇 2 源码分析与 Unity 重制(一)服务端 TCP 状态管理

专题介绍 该专题将会分析 LOMCN 基于韩版传奇 2,使用 .NET 重写的传奇源码(服务端 + 客户端),分析数据交互、状态管理和客户端渲染等技术,此外笔者还会分享将客户端部分移植到 Unity 和服务端用现代编程语言重写的全过程。 相关资料 官方论坛: https://www.lomcn.org/fo…...

python编程(2)之灯光秀的按钮

今天小编带领大家开始学习python编程的第二节&#xff0c;灯关秀的按钮。 按键在后续的学习和开发过程中&#xff0c;都是很重要的内容&#xff0c;是帮助我们获取外界信息的基础通道&#xff0c;识别按键的方式&#xff0c;在上节的内容给大家介绍了&#xff0c;大家可以进行学…...

pandas将dataframe列中的list转换为多列

在应用机器学习的过程中&#xff0c;很大一部分工作都是在做数据的处理&#xff0c;一个非常常见的场景就是将一个list序列的特征数据拆成多个单独的特征数据。 比如数据集如下所示&#xff1a; data [[John, 25, Male,[99,100,98]],[Emily, 22, Female,[97,99,98]],[Michae…...

小巧的Windows Memory Cleaner内存清理工具-释放内存,提升电脑的性能-供大家学习研究参考

软件介绍 Windows Memory Cleaner是一款非常不错的内存清理工具大小仅200KB&#xff0c;这款免费的 RAM 清理器使用本机 Windows 功能来清理内存区域&#xff0c;帮助用户释放内存&#xff0c;提升电脑的性能&#xff0c;有时程序不会释放分配的内存&#xff0c;从而使计算机变…...

STM32F072 CAN and USB

1 通用描述 1.1 STM8 MOSTek 6502 -> ST7 -> STM8 STM8型号单片机分为STM8A、STM8L、STM8S三个系列。 STM8A&#xff1a;汽车级应用 STM8L&#xff1a;超低功耗MCU STM8S&#xff1a;标准系列 1.2 STM32 - F1系列用的最多&#xff0c;最大工作频率72MHz - STM32固件库&am…...

卷积神经网络基础与补充

参考自 up主的b站链接&#xff1a;霹雳吧啦Wz的个人空间-霹雳吧啦Wz个人主页-哔哩哔哩视频这位大佬的博客 https://blog.csdn.net/m0_37867091?typeblog CNN的历史发展&#xff1a; 这一点老师上课的时候也有讲到&#xff0c;BP的出现对CNN的发展至关重要 卷积的特性&#x…...

File Inclusion(Pikachu)

File Inclusion(local) 这里随便点击一个提交 观察url&#xff0c;显示是一个文件file1.php 可以直接通过url修改这个文件 找到自己的文件&#xff08;本地文件&#xff09;shell.php的路径写上去 就可以看到 File Inclusion&#xff08;remote&#xff09; 提交的是一个目标…...

【Redis刨析】知识图谱的构建与实现

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 ChatGPT体验地址 文章目录 前言引用构建过程Redis的知识图谱构建过程Redis介绍快的原因持久化 引用 对于编程的学习&#xff0c;过了初级阶段&#xff0c;我认为应该减少对视频的依赖&am…...

html学习笔记 标题、段落、换行、列表、超链接、图片、表格

<h1></h1> <p></p> <br>换行&#xff0c;不带线 <hr>换行&#xff0c;带线列表 类似↓ 2 1 无序列表 <ul><li></li><li></li><li></li> </ul>有序列表 <oi><li></l…...

汽车项目管理

项目节点&#xff1a; MR (Management Review)——管理层评审 KO (Kick Off)——项目正式启动 SI (Strategy Intent)——战略意图 SC (Strategy Confirmation)——战略确认 PA (Program Approval)——项目批准 PR (Product Readiness)——产品就绪 VP (Verification Prototype)…...

好用的临沂GEO生成式引擎优化公司

在当今数字化时代&#xff0c;互联网的发展日新月异&#xff0c;AI搜索逐渐成为人们获取信息的重要方式。对于企业和个人来说&#xff0c;如何在海量信息中脱颖而出&#xff0c;让自己的产品、品牌、理念被客户第一时间找到&#xff0c;成为了亟待解决的问题。临沂好味来文化传…...

aFileChooser架构设计分析:Fragment、Loader和Intent的最佳实践

aFileChooser架构设计分析&#xff1a;Fragment、Loader和Intent的最佳实践 【免费下载链接】aFileChooser [DEPRECATED] Android library that provides a file explorer to let users select files on external storage. 项目地址: https://gitcode.com/gh_mirrors/af/aFil…...

CXPatcher:让Mac上的CrossOver性能飞升的终极指南

CXPatcher&#xff1a;让Mac上的CrossOver性能飞升的终极指南 【免费下载链接】CXPatcher A patcher to upgrade Crossover dependencies and improve compatibility 项目地址: https://gitcode.com/gh_mirrors/cx/CXPatcher 你是否曾经在Mac上尝试运行Windows游戏时感到…...

3步掌握Vidupe:基于内容识别的智能视频去重终极指南

3步掌握Vidupe&#xff1a;基于内容识别的智能视频去重终极指南 【免费下载链接】vidupe Vidupe is a program that can find duplicate and similar video files. V1.211 released on 2019-09-18, Windows exe here: 项目地址: https://gitcode.com/gh_mirrors/vi/vidupe …...

ChatGPTAPIFree代码架构深度剖析:从Express到OpenAI API的完整链路

ChatGPTAPIFree代码架构深度剖析&#xff1a;从Express到OpenAI API的完整链路 ChatGPTAPIFree是一个开源的代理API项目&#xff0c;让用户能够免费访问OpenAI的ChatGPT API服务。本文将深入剖析其代码架构&#xff0c;从Express服务器搭建到OpenAI API请求处理的完整链路&…...

用C语言链表实现一个简易图书管理系统(附完整源码)

从零构建C语言链表图书管理系统&#xff1a;工程化实践指南 当你第一次在数据结构课本上看到链表时&#xff0c;是否觉得这些抽象的概念离实际开发很遥远&#xff1f;作为C语言初学者&#xff0c;我完全理解这种困惑——直到亲手用链表实现了一个真正的图书管理系统。本文将带你…...

Arduino与树莓派协同开发:通信协议、实战项目与物联网应用

1. 项目概述&#xff1a;当开源硬件“大脑”遇上“小脑”如果你玩过乐高&#xff0c;大概能理解那种把不同功能的模块拼装起来&#xff0c;实现一个有趣功能的乐趣。在开源硬件的世界里&#xff0c;Arduino Uno和Raspberry Pi&#xff08;树莓派&#xff09;系列&#xff0c;就…...

过拟合和欠拟合

模型容量可以视作模型的复杂度。如果数据比较简单&#xff0c;却选择了模型容量高的&#xff08;复杂模型&#xff09;&#xff0c;可能会出现过拟合&#xff08;underfitting&#xff09;如果数据比较复杂&#xff0c;却选择类简单模型&#xff0c;可能会出现欠拟合&#xff0…...

某大厂尽调底稿又“裸奔”了?干了8年审计,我劝你把连网的AI停掉

上周圈子里那个因为把客户未公开的财务底稿传给某在线AI、导致重组项目提前泄露的瓜&#xff0c;估计大家都吃到了。虽然通报里只写了“某员工违规操作”&#xff0c;但我们私底下聊起来全是后怕。干金融审计第八年&#xff0c;我太懂那种窒息感了。每天都在高压线的边缘试探&a…...

从零构建Sora 2-DaVinci双引擎协同工作站:Intel Xeon W9-3400系列+RTX 6000 Ada专属散热/供电/PCIe拓扑配置清单(附实测带宽衰减曲线)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Sora 2与DaVinci整合的架构演进与协同范式 Sora 2作为新一代多模态时序生成引擎&#xff0c;其核心能力已从单向视频合成跃迁至具备物理感知、因果推理与跨模态对齐的闭环生成范式。DaVinci则持续强化其在专业…...