无限级分类添加,修改,删除
目的:实现无限级分类添加,修改,删除与缓存
相关:layui页面,thinkphp框架(3.2)
layui弹窗用于编辑与添加子栏目
html部分
<volist name="testing_cat" id="vo"><tr cate-id='{$vo.id}' fid='{$vo.pid}' ><td><div class="layui-unselect layui-form-checkbox" lay-skin="primary" data-id='2'><i class="layui-icon"></i></div></td><td>{$vo.pid}-{$vo.id}</td><td><i class="layui-icon x-show" status='true'></i>{$vo.name}</td><td><input type="text" class="layui-input x-sort" name="order" value="1"></td><td><input type="checkbox" name="switch" lay-text="开|停" checked="" lay-skin="switch"></td><td class="td-manage"><button class="layui-btn layui-btn layui-btn-xs" onclick="x_admin_show('编辑','admin_edit.html?id={$vo.id}&name={$vo.name}&action=1')" ><i class="layui-icon"></i>编辑</button><button class="layui-btn layui-btn-warm layui-btn-xs" onclick="x_admin_show('编辑','admin_edit.html?id={$vo.id}&name={$vo.name}&level=1&action=2')" ><i class="layui-icon"></i>添加子栏目</button><button class="layui-btn-danger layui-btn layui-btn-xs" onclick="member_del(this,{$vo.id})" href="javascript:;" ><i class="layui-icon"></i>删除</button></td></tr><volist name="vo.child" id="voo"><tr cate-id='{$voo.id}' fid='{$voo.pid}' ><td><div class="layui-unselect layui-form-checkbox" lay-skin="primary" data-id='2'><i class="layui-icon"></i></div></td><td>{$voo.id}</td><td> <i class="layui-icon x-show" status='true'></i>{$voo.name}</td><td><input type="text" class="layui-input x-sort" name="order" value="1"></td><td><input type="checkbox" name="switch" lay-text="开|停" checked="" lay-skin="switch"></td><td class="td-manage"><button class="layui-btn layui-btn layui-btn-xs" onclick="x_admin_show('编辑','admin_edit.html?id={$voo.id}&name={$voo.name}&action=1&pname={$vo.name}')" ><i class="layui-icon"></i>编辑</button><button class="layui-btn layui-btn-warm layui-btn-xs" onclick="x_admin_show('编辑','admin_edit.html?id={$voo.id}&name={$voo.name}&level=2&action=2&pname={$vo.name}')" ><i class="layui-icon"></i>添加子栏目</button><button class="layui-btn-danger layui-btn layui-btn-xs" onclick="member_del(this,{$voo.id})" href="javascript:;" ><i class="layui-icon"></i>删除</button></td></tr><volist name="voo.child" id="vooo"><tr cate-id='{$vooo.id}' fid='{$vooo.pid}' ><td><div class="layui-unselect layui-form-checkbox" lay-skin="primary" data-id='2'><i class="layui-icon"></i></div></td><td>{$vooo.id}</td><td> ├{$vooo.name}</td><td><input type="text" class="layui-input x-sort" name="order" value="1"></td><td><input type="checkbox" name="switch" lay-text="开|停" checked="" lay-skin="switch"></td><td class="td-manage"><button class="layui-btn layui-btn layui-btn-xs" onclick="x_admin_show('编辑','admin_edit.html?id={$vooo.id}&name={$vooo.name}&action=1&pname={$voo.name}')" ><i class="layui-icon"></i>编辑</button><button class="layui-btn layui-btn-warm layui-btn-xs" onclick="x_admin_show('编辑','admin_edit.html?id={$vooo.id}&name={$vooo.name}&level=3&action=2&pname={$voo.name}')" ><i class="layui-icon"></i>添加子栏目</button><button class="layui-btn-danger layui-btn layui-btn-xs" onclick="member_del(this,{$vooo.id})" href="javascript:;" ><i class="layui-icon"></i>删除</button></td></tr></volist></volist></volist>
弹窗页面内容,用于编辑与添加子栏目
<form id="cate_form" class="layui-form"><input type="hidden" name="id" value="{$id}"><input type="hidden" name="type" value="{$type}"><div class="layui-form-item"><label for="username" class="layui-form-label"><span class="x-red">*</span>名称</label><div class="layui-input-inline"><input type="text" id="username" name="catename" required="" lay-verify="required"autocomplete="off" value="{$name}" class="layui-input"></div><div class="layui-form-mid layui-word-aux"><span class="x-red">*</span>父级:{$pname}</div></div><div class="layui-form-item"><label class="layui-form-label"><span class="x-red">*</span>状态</label><div class="layui-input-block"><input type="checkbox" name="switch" lay-text="开启|停用" checked="" lay-skin="switch"></div></div><div class="layui-form-item"><label for="L_repass" class="layui-form-label"></label><button id="btnButton" class="layui-btn" lay-filter="add" lay-submit="">增加</button></div></form>
js部分
/*用户-删除*/function member_del(obj,id){layer.confirm('确认要删除吗?',function(index){//发异步删除数据$.post("__URL__/del",{id:id},function(data){//console.log(data);$(obj).parents("tr").remove();layer.msg('已删除!',{icon:1,time:1000});})});}
弹窗页面js内容,用于提交编辑与添加子栏目,
$("#btnButton").on("click",function(){$('#cate_form').ajaxSubmit( //ajax方式提交表单{url: '__URL__/add',type: 'post',dataType: 'json',beforeSubmit: function () {},success: function (data) {console.log(data);},//clearForm: false,//禁止清楚表单//resetForm: false //禁止重置表单});});
php(tp3.2)部分
tp的S方法用于缓存分类数据 (Category.php)
<?php/*** 分类*/namespace Testing\Service;class Category {public $mCategory = null;static public $mInstance = null;static public $mKey = 'CATEGORY';static public function getInstance(){if (!is_object(self::$mInstance)) {self::$mInstance = new Category;//dump(S(self::$mKey));die();if (S(self::$mKey)) {self::$mInstance->loadFromCache();} else {self::$mInstance->loadFromDb();}}return self::$mInstance;}public function loadFromCache(){self::$mInstance->mCategory = S(self::$mKey);}public function loadFromDb(){self::$mInstance->mCategory = $this->getCates();// 设置缓存S(self::$mKey, self::$mInstance->mCategory);}public function cleanCache(){S(self::$mKey,null);}//递归所有分类public function getCates($pid=0){$cate = M('testing_cat');$cates = $cate->where(array('pid'=>$pid,'display'=>'1'))->select();//遍历分类$arr = array();if($cates){foreach ($cates as $key => $value) {$temp['id'] = $value['id'];$temp['name'] = $value['name'];$temp['pid']=$value['pid'];$temp['html_id']=$value['html_id'];//递归获取子集分类$temp['child'] = $this->getCates($temp['id']);$arr[] = $temp;}return $arr;}}}
分类表页面渲染 ,缓存分类文件的位置 use \Testing\Service\Category;
public function cate(){$res_cate=category::getInstance();//调用缓存数据\Service\Category$res_cate = get_object_vars($res_cate);$this->assign('testing_cat',$res_cate['mCategory']);$res_cat = M()->query('select id,name,pid from js_testing_cat where pid = 0');$this->assign('top_cat',$res_cat);$this->display();}
弹窗页面的渲染编辑与添加,目前的暂不支持添加四级分类
public function admin_edit(){$id = I('id');$name = I('name');//$level = I('level');$action = I('action');$pname = I('pname');if($level==3){die("暂不支持第四级添加!");}$pname==""?$pname="顶级":$pname=$pname;if($action==1){//编辑$this->assign('name',$name);$this->assign('type','edit');}else{$this->assign('type','add');}//category::cleanCache();$this->assign('id',$id);$this->assign('pname',$pname);$this->display();}
编辑与添加
//编辑与添加public function add(){$id = I('id');$type = I('type');$catename = I('catename');if($type=='edit'){$res = M()->execute('update js_testing_cat SET name = "'.$catename.'" where id = '.$id.'');if($res){category::cleanCache();}}else{if(!empty($catename)){$res = M()->execute('INSERT INTO js_testing_cat SET name = "'.$catename.'", pid = '.$id.'');category::cleanCache();$this->ajaxReturn($res);}}}
这里的删除为假删除display = “0”
//删除public function del(){$id = I('id');if(!empty($id)){$res = M()->execute('update js_testing_cat SET display = "0" where id = '.$id.'');category::cleanCache();$this->ajaxReturn($res);}}
~~***方法不够好,下次还需要改进。***~~
无限级分类添加,修改,删除相关推荐
- asp.net 对xml文件的读写,添加,修改,删除操作
asp.net 对xml文件的读写,添加,修改,删除操作 下面有代码调试正确 using System; using System.Collections; using System.Componen ...
- wordpress怎么修改html,WordPress后台编辑器HTML模式界面中添加修改删除按钮
在WordPress编辑器HTML模式界面中添加 按钮一文中,我大致介绍了怎么在后台添加一些自定义的按钮,本文则更为详细全面的对wordpress后台编辑器HTML模式下的按钮自定义进行详解,以让开发 ...
- 如何动态添加修改删除定时任务
如何动态添加修改删除定时任务 (1)思路说明: (a)首先这里我们需要重新认识一个类ThreadPoolTaskScheduler:线程池任务调度类,能够开启线程池进行任务调度. (b)ThreadP ...
- iReport 5.添加修改删除jdbc
Jaspersoft iReport Designer 5.1.0 启动的时候以前的数据源jdbc找不到,报错:classnotfound:oracle.jdbc.driver.Oracl ...
- CentOS7设置静态IP、搭建单机版FastDFS图片服务器、使用FastDFS-Client客户端进行简单测试、实现图片上传、实现商品添加修改删除
CentOS7设置静态IP.搭建单机版FastDFS图片服务器.使用FastDFS-Client客户端进行简单测试.实现图片上传.实现商品添加修改删除 CentOS7设置静态IP而且还可以上网 192 ...
- Chrome浏览器设置header请求 响应头 使用 Chrome ModHeader插件,添加/修改/删除HTTP请求标头和响应标头
ModHeader,是一款可以添加/修改/删除请求标头和响应标头的浏览器插件 ModHeader插件功能 ModHeader插件支持添加/修改/删除请求标头和响应标头,并可以启用基于URL /资源类型 ...
- VC6.0 MFC 列表框 列表控件 添加 修改 删除
VC6.0 MFC 列表框 列表控件 添加 修改 删除 写在前面:列表框是很常用,并且很重要的一个控件,那么接下来,就跟随我的脚步,去探索它的奥秘吧! 一.未卜先知 1.编译运行后,点击"学 ...
- es修改索引java_Elasticsearch添加修改删除索引文档案例分享
本文介绍如何采用bboss es添加/修改/删除/批量删除elasticsearch索引文档,直接看代码. 添加/修改文档 TAgentInfo agentInfo = new TAgentInfo( ...
- SpringBoot定时任务升级篇(动态添加修改删除定时任务)
(1)思路说明: (a)首先这里我们需要重新认识一个类ThreadPoolTaskScheduler:线程池任务调度类,能够开启线程池进行任务调度. (b)ThreadPoolTaskSchedule ...
最新文章
- pycharm用爱发电
- OpenCV学习笔记之Mat
- 文献学习(part13)--A Sober Look at the Unsupervised Learning of Disentangled...
- h5适配华为手机_知道为什么建站大多选H5自适应网站吗?现在我就告诉你
- shell脚本之函数篇
- 私募公司完成对戴尔软件的收购 SonicWall与Quest将分别独立
- TCP系列05—连接管理—4、TCP连接的ISN、连接建立超时及TCP的长短连接
- 一起撸个朋友圈吧 (Step6) 评论对齐(点击评论对齐)【下】
- maven项目引入sqljdbc4 找不到包的完美 解决方案。
- 20190827 On Java8 第十四章 流式编程
- 分布式架构的核心要素和设计方法
- jspstudy启动mysql失败_mysql启动失败的一个解决方法
- 项目答辩演讲稿(详细原文)
- VR全景视频、图片播放器
- linux中getchar函数用法,linux getchar函数使用
- 股票什么时候买入什么时候卖出适合?
- 如何用outlook添加qq邮箱账户
- 拉依达准则去除异常数据
- VB中对EXCEL的各种操作
- latex 矩阵叫行列编号