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

fastadmin 下拉多级分类

要实现下图效果

 一、先创建数据表

二、在目标的controll中引入use fast\Tree;

public function _initialize()
{parent::_initialize();$this->model = new \app\admin\model\zxdc\Categorys;$tree = Tree::instance();$tree->init(collection($this->model->order('id desc')->select())->toArray(), 'pid');$this->categorylist = $tree->getTreeList($tree->getTreeArray(0), 'name');$categorydata = [0 => ['id' => '0', 'name' => __('None')]];foreach ($this->categorylist as $k => $v) {$categorydata[$v['id']] = $v;}$this->view->assign("parentList", $categorydata);}public function index()
{//设置过滤方法$this->request->filter(['strip_tags']);if ($this->request->isAjax()) {//构造父类select列表选项数据$list = $this->categorylist;;$total = count($list);$result = array("total" => $total, "rows" => $list);return json($result);}return $this->view->fetch();
}/*** 编辑*/
public function edit($ids = null)
{$row = $this->model->get($ids);if (!$row) {$this->error(__('No Results were found'));}$adminIds = $this->getDataLimitAdminIds();if (is_array($adminIds)) {if (!in_array($row[$this->dataLimitField], $adminIds)) {$this->error(__('You have no permission'));}}if ($this->request->isPost()) {$params = $this->request->post("row/a");if ($params) {if ($params['pid'] == $row['id']) {$this->error(__('Can not change the parent to self'));}$params = $this->preExcludeFields($params);$result = false;Db::startTrans();try {//是否采用模型验证if ($this->modelValidate) {$name = str_replace("\\model\\", "\\validate\\", get_class($this->model));$validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : $name) : $this->modelValidate;$row->validateFailException(true)->validate($validate);}$result = $row->allowField(true)->save($params);Db::commit();} catch (ValidateException $e) {Db::rollback();$this->error($e->getMessage());} catch (PDOException $e) {Db::rollback();$this->error($e->getMessage());} catch (Exception $e) {Db::rollback();$this->error($e->getMessage());}if ($result !== false) {$this->success();} else {$this->error(__('No rows were updated'));}}$this->error(__('Parameter %s can not be empty', ''));}$this->view->assign("row", $row);return $this->view->fetch();
}

修改和添加下面两个方法

三、

1、在目标js中,添加代码,去掉首页html字符

2、 表格字段居左,这样是为了看效果更加明显

{field: 'name', title: __('Name'), operate: 'LIKE', align:'left'},

四,在目标view中修改add.html和edit.html的pid代码

add.html

<div class="form-group"><label class="control-label col-xs-12 col-sm-2">{:__('Pid')}:</label><div class="col-xs-12 col-sm-8"><select id="c-pid" data-rule="required" class="form-control selectpicker" name="row[pid]">{foreach name="parentList" item="vo"}<option  value="{$key}" {in name="key" value=""}selected{/in}>{$vo.name}</option>{/foreach}</select></div>
</div>

edit.html

<div class="form-group"><label class="control-label col-xs-12 col-sm-2">{:__('Pid')}:</label><div class="col-xs-12 col-sm-8"><select id="c-pid" data-rule="required" class="form-control selectpicker" name="row[pid]">{foreach name="parentList" item="vo"}<option   value="{$key}" {in name="key" value="$row.pid"}selected{/in}>{$vo.name}</option>{/foreach}</select></div>
</div>

完成上面步骤后,下拉分类就已完成,但在添加分类商品时,在编辑时会出现selepage未选中状态,还要进行修改

一、分类商品中用了zxdc_categorys_id字段来做分类ID,在add添加时一切正常,在edit时要进行修改,在分类商品的controall中重写edit方法,把分类数值获取下发

/*** 编辑*/
public function edit($ids = null)
{ $test = new \app\admin\model\zxdc\Categorys;$tree = Tree::instance();$tree->init(collection($test->order('id desc')->select())->toArray(), 'pid');$this->categorylist = $tree->getTreeList($tree->getTreeArray(0), 'name');$categorydata = [0 => ['id' => '0', 'name' => __('None')]];foreach ($this->categorylist as $k => $v) {$categorydata[$v['id']] = $v;}$this->view->assign("parentList", $categorydata);$row = $this->model->get($ids);if (!$row) {$this->error(__('No Results were found'));}$adminIds = $this->getDataLimitAdminIds();if (is_array($adminIds)) {if (!in_array($row[$this->dataLimitField], $adminIds)) {$this->error(__('You have no permission'));}}if ($this->request->isPost()) {$params = $this->request->post("row/a");if ($params) {$params = $this->preExcludeFields($params);$result = false;Db::startTrans();try {//是否采用模型验证if ($this->modelValidate) {$name = str_replace("\\model\\", "\\validate\\", get_class($this->model));$validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : $name) : $this->modelValidate;$row->validateFailException(true)->validate($validate);}$result = $row->allowField(true)->save($params);Db::commit();} catch (ValidateException $e) {Db::rollback();$this->error($e->getMessage());} catch (PDOException $e) {Db::rollback();$this->error($e->getMessage());} catch (Exception $e) {Db::rollback();$this->error($e->getMessage());}if ($result !== false) {$this->success();} else {$this->error(__('No rows were updated'));}}$this->error(__('Parameter %s can not be empty', ''));}$this->view->assign("row", $row);return $this->view->fetch();
}

二、在对应的view的edit.html中,修改

<div class="form-group"><label class="control-label col-xs-12 col-sm-2">{:__('Zxdc_categorys_id')}:</label><div class="col-xs-12 col-sm-8"><select id="c-zxdc_categorys_id" data-rule="required" class="form-control selectpicker" name="row[zxdc_categorys_id]">{foreach name="parentList" item="vo"}<option   value="{$key}" {in name="key" value="$row.zxdc_categorys_id"}selected{/in}>{$vo.name}</option>{/foreach}</select></div>
</div>

相关文章:

fastadmin 下拉多级分类

要实现下图效果 一、先创建数据表 二、在目标的controll中引入use fast\Tree; public function _initialize() {parent::_initialize();$this->model new \app\admin\model\zxdc\Categorys;$tree Tree::instance();$tree->init(collection($this->model->order(…...

时序预测 | MATLAB实现基于CNN-LSTM卷积长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)

时序预测 | MATLAB实现基于CNN-LSTM卷积长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价) 目录 时序预测 | MATLAB实现基于CNN-LSTM卷积长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)预测结果基本介绍程序设计参考资料 预测结果 基本介绍 MATLAB实现基…...

RabbitMQ工作流程详解

1 生产者发送消息的流程 (1)生产者连接RabbitMQ&#xff0c;建立TCP连接(Connection)&#xff0c;开启信道(Channel) (2)生产者声明一个Exchange (交换器)&#xff0c;并设置相关属性&#xff0c;比如交换器类型、是否持久化等 (3)生产者声明一个队列井设置相关属性&#xf…...

LabVIEW使用图像处理进行交通控制性能分析

LabVIEW使用图像处理进行交通控制性能分析 采用普雷维特、拉普拉斯、索贝尔和任意的空间域方法对存储的图像进行边缘检测&#xff0c;并获取实时图像。然而&#xff0c;对四种不同空间域边缘检测方法的核的性能分析。 以前&#xff0c;空路图像存储在数据库中&#xff0c;道路…...

CentOS 7 下 Keepalived + Nginx 实现双机高可用

CentOS 7 下 Keepalived Nginx 实现双机高可用 文章目录 CentOS 7 下 Keepalived Nginx 实现双机高可用服务器准备服务信息服务架构 服务安装nginxKeepalived 服务配置nginxKeepalived 启动服务nginxkeepalived 服务验证查看 VIP 状态CURL 命令访问浏览器访问 高可用验证停止…...

【Linux】IO多路转接——select接口

目录 I/O多路转接之select select初识 select函数 socket就绪条件 select基本工作流程 select服务器 select的优点 select的缺点 select的适用场景 I/O多路转接之select select初识 select是系统提供的一个多路转接接口。 select系统调用可以让我们的程序同时监视多…...

error_Network Error

此页面为订单列表&#xff0c;是混合开发(页面嵌入在客户端中) 此页面为订单列表&#xff0c;此需求在开发时后端先将代码发布在测试环境&#xff0c;我在本地调试时调用的后端接口进行联调没有任何问题。 此后我将代码发布在测试环境&#xff0c;在app中打开页面&#xff0c…...

Python爱心光波

文章目录 前言Turtle入门简单案例入门函数 爱心光波程序设计程序分析 尾声 前言 七夕要来啦&#xff0c;博主在闲暇之余创作了一个爱心光波&#xff0c;感兴趣的小伙伴们快来看看吧&#xff01; Turtle入门 Turtle 是一个简单而直观的绘图工具&#xff0c;它可以帮助你通过简…...

【分布式】Viewstamped Replication Revisited

篇前感悟&#xff1a; 阅读分布式系统文章的意义其实并不在于你个人真正地去开发这样一个基于这种协议的系统&#xff0c;因为真正去开发一个高可用的分布式系统实在是太难了&#xff08;对我来说…&#xff09;更多的还是汲取其中的思想&#xff0c;包括设计思路&#xff0c;优…...

微服务07-分布式缓存

前提: 单机的Redis存在四大问题: 解决办法:基于Redis集群解决单机Redis存在的问题 1、Redis持久化 Redis 具有持久化功能,其会按照设置以 快照 或 操作日志 的形式将数据持久化到磁盘。 Redis有两种持久化方案: RDB持久化AOF持久化注意: RDB 是默认持久化方式,但 Red…...

QGraphicsView放大时,paint有时不被调用,导致图像绘制不出来(2)

此前&#xff08;1&#xff09;解决的是在QGraphicsItem::boundingRect不变的情况下造成不绘制。这次解决的是QGraphicsItem::boundingRect随时都发生变化导致的不绘制。 这问题是我在不继承QGraphicsLineItem&#xff08;调用setLine&#xff09;&#xff0c;而是继承QGraphic…...

深入理解设计模式-创建型之建造者模式(与工厂区别)

什么是建造者设计模式&#xff1f;和工厂设计模式有什么区别 建造者设计模式&#xff08;Builder Design Pattern&#xff09;和工厂设计模式&#xff08;Factory Design Pattern&#xff09;都是面向对象设计中的创建型模式&#xff0c;但它们解决的问题和应用场景有所不同。…...

Centos7多台服务器免密登录

准备四台服务器: docker0 docker1 docker2 docker3 在docker0服务器上生成公钥和私钥 [rootwww ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory /root/.ssh. Enter passp…...

C语言实现哈希搜索算法

一、哈希搜索算法原理 哈希搜索&#xff0c;也叫散列查找&#xff0c;是一种通过哈希表&#xff08;散列表&#xff09;实现快速查找目标元素的算法。哈希搜索算法通常适用于需要快速查找一组数据中是否存在某个元素的场景&#xff0c;其时间复杂度最高为 O(1)&#xff0c;而平…...

MySQL卸载并重装指定版本

MySQL卸载并重装制定版本 学习新的项目&#xff0c;发现之前的Navicat已经失去了与现有MySQL的链接&#xff0c;而且版本也不适合&#xff0c;为了少走弯路&#xff0c;准备直接重装相应版本的MySQL 卸载现有MySQL 停止windows的MySQL服务&#xff0c;【windowsR】打开运行框…...

文件IO编程 1 2

头文件包含路径 linux 操作系统分为两大空间&#xff1a;用户空间和内核空间 这样划分&#xff0c;是为了保护内核的核心组件&#xff0c;不被轻易访问和修改 系统调用&#xff1a;安全的访问内核空间 其核心是&#xff1a;函数API&#xff08;API&#xff1a;用户编程接口&…...

Java后端框架模块整合

提示&#xff1a;使用Java后端开发框架能够提高开发效率、代码质量&#xff0c;提升可扩展性&#xff0c;降低开发成本和易于维护。 文章目录 前言MyBatis 框架知识Spring 框架知识SpringMVC 框架知识SpringBoot 框架知识 前言 提示&#xff1a;这里可以添加本文要记录的大概内…...

17 synchronized关键字使用 synchronized方法、synchronized块

synchronized方法、synchronized块 线程的同步不安全的线程示例1&#xff1a;示例2示例3 synchronized方法、synchronized块 线程的同步 并发&#xff1a;同一个对象被多个线程同时操作。 解决方案&#xff1a;让多个线程排队操作对象。 使用队列和锁解决多线程的并发问题。 同…...

django-基本环境配置

文章目录 django 环境安装1. 安装环境1.1 安装 Python (配置虚拟环境)1.1.1 步骤 1.2 Conda配置环境参考 django 环境安装 1. 安装环境 1.1 安装 Python (配置虚拟环境) 由于国外源速度慢&#xff0c;可以pip添加清华源 pip config set global.index-url https://pypi.tuna.…...

Springboot 实践(4)swagger-ui 测试controller

前文项目操作&#xff0c;完成了项目的创建、数据源的配置以及数据库DAO程序的生成与配置。此文讲解利用swagger-ui界面&#xff0c;测试生成的数据库DAO程序。目前&#xff0c;项目swagger-ui界面如下&#xff1a; 以”用户管理”为例&#xff0c;简单讲述swagger-ui测试数据库…...

从“黑盒”到“白盒”:深入理解PHP伪协议php://input的底层机制与安全开发启示

从“黑盒”到“白盒”&#xff1a;深入理解PHP伪协议php://input的底层机制与安全开发启示 在Web安全领域&#xff0c;文件包含漏洞一直是攻击者青睐的攻击向量。而PHP伪协议php://input的巧妙利用&#xff0c;往往能让看似无害的文件包含操作演变为致命的远程代码执行漏洞。本…...

别再死记硬背ELMo、GPT、BERT的区别了!一张图带你搞懂它们的核心差异与适用场景

一图胜千言&#xff1a;ELMo、GPT、BERT技术差异与实战选型指南 刚接触NLP时&#xff0c;我也曾被各种预训练模型绕得头晕眼花——它们看起来都能处理文本&#xff0c;但面试官一问"为什么用BERT不用GPT"就瞬间语塞。直到我把这些模型拆解成汽车零件&#xff0c;才真…...

复旦微FM33FR0xx开发板实战:从零构建低功耗电容触摸应用

1. 项目概述&#xff1a;从一块开发板说起最近在捣鼓智能家居的小玩意儿&#xff0c;想找个带触摸功能又够省电的MCU&#xff0c;正好看到了复旦微电子新出的FM33FR0xx系列开发套件。这板子到手玩了一阵&#xff0c;感觉挺有意思&#xff0c;它不单单是块核心板&#xff0c;还配…...

超越官方TabBar:打造高交互小程序导航的3个高级技巧(附动态隐藏方案)

超越官方TabBar&#xff1a;打造高交互小程序导航的3个高级技巧&#xff08;附动态隐藏方案&#xff09; 在小程序生态中&#xff0c;导航栏作为用户交互的核心枢纽&#xff0c;其体验直接影响用户留存率。微信原生TabBar虽然开箱即用&#xff0c;但在动态效果、状态管理和场景…...

Marshall 推出新款头戴式耳机 Milton ANC:音质续航兼得,售价 229 美元!

ZDNET 要点总结Milton ANC 是 Marshall 最新推出的头戴式耳机&#xff0c;在音质、耐用性和电池续航方面毫不妥协&#xff0c;售价为 229 美元。Marshall 宣布推出全新头戴式耳机——Milton ANC&#xff0c;它承诺在不牺牲电池续航的前提下&#xff0c;带来标志性的音效体验&am…...

2026年10款论文降AI率平台实测:从90%降至10%的硬核之选

现在学校对 AIGC 的检测越来越严格&#xff0c;降低 AI 率成了毕业生最头疼的问题。我当初写论文的时候&#xff0c;就因为 AI 率太高差点栽跟头&#xff0c;熬夜一遍遍手动修改&#xff0c;结果不仅 AI 率没降下来&#xff0c;查重率还越改越高&#xff0c;整个人都快崩溃了。…...

基于CMS8S6990评估板实现高精度电压电流测量:从血氧仪到通用测量工具的移植实践

1. 项目缘起与核心思路最近终于拿到了中微半导体&#xff08;CMSemicon&#xff09;正版的CMS8S6990血氧仪开发板。这块板子给我的第一印象就是“精致”&#xff0c;尺寸不大&#xff0c;但该有的接口和功能一应俱全&#xff0c;颇有点“麻雀虽小&#xff0c;五脏俱全”的味道。…...

谷歌外链怎么发?靠1种图文形式自动吸引外链

写外链一直是SEO里最耗体力的活。很多公司招了三个实习生&#xff0c;每天坐在电脑前发几百封开发信&#xff0c;回复率往往不到0.5%。到了2026年&#xff0c;谷歌的算法已经能识别出绝大多数带有“交换”性质的人为链接。现在的行情是&#xff0c;想要稳住排名&#xff0c;得让…...

深度解析Linux内核task_struct:从进程管理到性能调优

1. 项目概述&#xff1a;从一行代码到操作系统的心脏 如果你写过C语言程序&#xff0c;一定用过 int main() &#xff0c;程序启动后&#xff0c;操作系统会为它创建一个“进程”。在Linux的世界里&#xff0c;这个进程在操作系统内核眼中&#xff0c;到底是什么样子的&#…...

【权威验证】Perplexity书评辅助效果对比实验:传统写作vs AI增强写作(N=1,247篇样本,p<0.001)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;【权威验证】Perplexity书评辅助效果对比实验&#xff1a;传统写作vs AI增强写作&#xff08;N1,247篇样本&#xff0c;p<0.001&#xff09; 本实验基于真实学术出版场景&#xff0c;对1,247篇计算机科学领…...