目的:实现无限级分类添加,修改,删除与缓存

相关: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>&nbsp;&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├{$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);}}

~~***方法不够好,下次还需要改进。***~~

无限级分类添加,修改,删除相关推荐

  1. asp.net 对xml文件的读写,添加,修改,删除操作

    asp.net 对xml文件的读写,添加,修改,删除操作 下面有代码调试正确 using System; using System.Collections; using System.Componen ...

  2. wordpress怎么修改html,WordPress后台编辑器HTML模式界面中添加修改删除按钮

    在WordPress编辑器HTML模式界面中添加 按钮一文中,我大致介绍了怎么在后台添加一些自定义的按钮,本文则更为详细全面的对wordpress后台编辑器HTML模式下的按钮自定义进行详解,以让开发 ...

  3. 如何动态添加修改删除定时任务

    如何动态添加修改删除定时任务 (1)思路说明: (a)首先这里我们需要重新认识一个类ThreadPoolTaskScheduler:线程池任务调度类,能够开启线程池进行任务调度. (b)ThreadP ...

  4. iReport 5.添加修改删除jdbc

    Jaspersoft iReport Designer 5.1.0       启动的时候以前的数据源jdbc找不到,报错:classnotfound:oracle.jdbc.driver.Oracl ...

  5. CentOS7设置静态IP、搭建单机版FastDFS图片服务器、使用FastDFS-Client客户端进行简单测试、实现图片上传、实现商品添加修改删除

    CentOS7设置静态IP.搭建单机版FastDFS图片服务器.使用FastDFS-Client客户端进行简单测试.实现图片上传.实现商品添加修改删除 CentOS7设置静态IP而且还可以上网 192 ...

  6. Chrome浏览器设置header请求 响应头 使用 Chrome ModHeader插件,添加/修改/删除HTTP请求标头和响应标头

    ModHeader,是一款可以添加/修改/删除请求标头和响应标头的浏览器插件 ModHeader插件功能 ModHeader插件支持添加/修改/删除请求标头和响应标头,并可以启用基于URL /资源类型 ...

  7. VC6.0 MFC 列表框 列表控件 添加 修改 删除

    VC6.0 MFC 列表框 列表控件 添加 修改 删除 写在前面:列表框是很常用,并且很重要的一个控件,那么接下来,就跟随我的脚步,去探索它的奥秘吧! 一.未卜先知 1.编译运行后,点击"学 ...

  8. es修改索引java_Elasticsearch添加修改删除索引文档案例分享

    本文介绍如何采用bboss es添加/修改/删除/批量删除elasticsearch索引文档,直接看代码. 添加/修改文档 TAgentInfo agentInfo = new TAgentInfo( ...

  9. SpringBoot定时任务升级篇(动态添加修改删除定时任务)

    (1)思路说明: (a)首先这里我们需要重新认识一个类ThreadPoolTaskScheduler:线程池任务调度类,能够开启线程池进行任务调度. (b)ThreadPoolTaskSchedule ...

最新文章

  1. pycharm用爱发电
  2. OpenCV学习笔记之Mat
  3. 文献学习(part13)--A Sober Look at the Unsupervised Learning of Disentangled...
  4. h5适配华为手机_知道为什么建站大多选H5自适应网站吗?现在我就告诉你
  5. shell脚本之函数篇
  6. 私募公司完成对戴尔软件的收购 SonicWall与Quest将分别独立
  7. TCP系列05—连接管理—4、TCP连接的ISN、连接建立超时及TCP的长短连接
  8. 一起撸个朋友圈吧 (Step6) 评论对齐(点击评论对齐)【下】
  9. maven项目引入sqljdbc4 找不到包的完美 解决方案。
  10. 20190827 On Java8 第十四章 流式编程
  11. 分布式架构的核心要素和设计方法
  12. jspstudy启动mysql失败_mysql启动失败的一个解决方法
  13. 项目答辩演讲稿(详细原文)
  14. VR全景视频、图片播放器
  15. linux中getchar函数用法,linux getchar函数使用
  16. 股票什么时候买入什么时候卖出适合?
  17. 如何用outlook添加qq邮箱账户
  18. 拉依达准则去除异常数据
  19. VB中对EXCEL的各种操作
  20. latex 矩阵叫行列编号

热门文章

  1. C语言的灵魂--指针(1)
  2. 成功解决当打开3d实体模型时,有部分实体是线框显示
  3. Tomcat的context path
  4. AI绘画关键词网站推荐 :轻松获取百万个提示词!完全免费
  5. 美食照瞬间增色 分享英伦舌尖上的文化
  6. mysql数据库的吞吐量_MySQL 数据库监控指标之吞吐量
  7. 上船容易——从阿里云迁移SQL数据库到Azure云的尝试 之二
  8. 证监会批准开展PTA、铁矿石、黄金等5种期权交易
  9. python中dir的使用_python中dir函数如何使用?
  10. 小孩的游戏 - 2021数据结构 排序和选择实验题