商品分类管理模块基本完成
2017-04-27 17:25
363 查看
无限分类
1.表的变化
所谓无限分类,就是用一张表来实现所有分类,在原来简单分类表的基础上,加了个pid字段,这就是数据表方面的变化。
2.控制器,模型的变化
我们原先的分类是一级的,就是分类下不能再添加分类了,我们现在开始改进,我们首先把想要的无限分类层级数据手动添加到数据库中:pid为0就是顶级分类,然后pid为某值就是某分类下,参考上图理解。 现在我们还按以前的方法,在控制器中像输出所有管理员那样,来获得分类列表,这时候我们会发现,得到的结果不是我们想要的,我们要的是按分类有序排列的列表。 这时候,我们发现控制器这样不够用了,此刻,我终于开始感觉到模型的用处了,(原来的模型啥都不用写,就能完成增删改查,我一直很好奇模型还有什么拓展作用),涉及到数据处理,就用模型来完成。 思路是模型中新增得到树桩分类的方法,然后在控制器中调用模型的那个方法来获得有序的二维数组,不再是我们那个按数据表依次读下来的二维数组了。然后传到视图中,代码如下 犯的几个错误:1.模型里写的方法,在控制器访问,要实例化模型后再访问(除非写的是静态方法) 2.不要用getdata作为模型里的函数名,估计是关键字,会出问题 3.到视图中,怎么把杠杠显示出来,我一开始用的是很low的原始伎俩,就是各个元素用level做class,然后写段js放在页面中,遇到class为啥的就加几个杠杠,蠢哭。查阅资料,发现神技`{$cate['level']|str_repeat="——丨",###}{$cate.cName}`,当然这一切都是建立在模型中level的存在基础上!
模型中 <?php namespace app\admin\model; use think\Model; class Cate extends Model { public function gettree(){ $arr=$this->all(); return $this->tree($arr); } //定义一个方法,对给定的数组,递归形成树 public function tree($arr,$pid=0,$level=0){ static $tree = array(); foreach($arr as $v){ if($v['pid']==$pid){ //说明找到,保存 $v['level'] = $level; $tree[] = $v; //继续找 $this -> tree($arr,$v['id'],$level+1); } } return $tree; } } 控制器中 public function categorylist(){ $cate=new Cate; $cate=$cate->gettree(); return view('categorylist',['cate'=>$cate]); } 视图中 <tbody> {volist name="cate" id="cate"} <tr> <!--这里的id和for里面的c1 需要循环出来--> <td><input type="checkbox" id="c1" class="check"><label for="c1" class="label">{$cate.id}</label></td> <td>{$cate['level']|str_repeat="——丨",###}{$cate.cName}</td> <td align="center"> <input type="button" value="修改" class="edit2 btn" info="{:url('admin/category/edit')}"><!--info好像没用上--> <input type="button" value="删除" class="del btn" info="{:url('admin/category/del')}"><!--info好像没用上,用上咯--> </td> </tr> {/volist} <tr><td colspan="4"></td></tr> </tbody>
添加分类
主要就是在添加分类的视图中,增加一个上级分类,然后就是把分类列表传到下拉菜单中
public function add(){ if(request()->isPost()){ $catename=input('catename'); $upcateid=input('upcateid'); $cate=new Cate; $cate->cName=$catename; $cate->pid=$upcateid; if($cate->save()){ return '分类:'.$catename.'新增成功!'.'<br>' 4000 . '<a class="ajax" info="'.url('admin/category/add').'">继续新增</a>'.'|'.'<a class="ajax" info="'.url('admin/category/categorylist').'">返回分类列表</a>'; }else{ return $cate->getError(); } }else{ $cate=new Cate; $cate=$cate->gettree(); return view('add',['cate'=>$cate]); } }
然后点击提交的时候,要把select中选定的option中的id传去作为新增分类的pid
视图中 <td> <select id="downlist" style="width:200px;"> <option>顶级分类 </option> {volist name="cate" id="cate"} <option value="{$cate.id}">{$cate['level']|str_repeat="——丨",###}{$cate.cName}</option> {/volist} </select> </td> jquery中 //新增分类提交 $(document).on('click','.submit3',function(){ var catename=$('#catename').val(); var upcateid=$('#downlist').val(); $.post("/lolnews/public/admin/category/add.html", {'catename':catename,'upcateid':upcateid}, function(data){ $('#ajaxshow').html(data); }) return false; });
无限分类基本完成。
相关文章推荐
- JSP+JAVABEAN做的商品管理模块
- 开源电子商务OFBIZ:商品分类与管理(二)
- WMS仓库管理系统---(4)分类管理模块
- 网上图书商城项目学习笔记-025分类管理模块分析及查询所有分类实现
- 怎么优化ViewController,区分模块,分类管理
- ERP基础档案管理模块中实现多级分类档案ID号自动编码技术(V1.0)
- 开源电子商务OFBIZ:商品分类与管理(二)
- OpenCart之分类显示最新商品及热卖(畅销)商品模块插件
- OpenCart之分类显示最新商品及热卖(畅销)商品模块插件
- web day26 小项目练习图书商城 后台分类管理模块,图书管理模块,前台登陆过滤
- 开源电子商务OFBIZ:商品分类与管理(三)
- 裁剪Ubuntu内核和模块管理2 分类: arm-linux-Ubuntu 2013-07-22 16:29 257人阅读 评论(0) 收藏
- 分类管理模块-删除新闻分类(简单版本)
- OpenCart之分类显示最新商品及热卖(畅销)商品模块插件
- OpenCart之商品分类(Category)模块教程
- 开源电子商务OFBIZ:商品分类与管理(一)
- 分类管理模块-修改新闻分类(简单版本)
- 黑马程序员---10、超市商品管理之商品信息管理模块
- ERP基础档案管理模块中实现多级分类档案ID号自动编码技术(V1.0)
- 商品管理系统--分类、品牌、属性、商品、价格、图片管理