从零开始之ecshop基础篇下(21)_项目管理_非技术区_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 非技术区 > 项目管理 > 从零开始之ecshop基础篇下(21)

从零开始之ecshop基础篇下(21)

 2013/12/18 2:09:12  cnblogs`  博客园  我要评论(0)
  • 摘要:无限分类树桩列表解决:1,缩进问题2,排序问题排序问题递归查询的过程。按照节点的父子关系(上下级关系)查找的分类的过程。从,parentid==0的分类开始,查找其子分类。利用当前找到的分类的ID作为条件查找条件parentid==ID,找到该分类的子类。当找到每个子分类时,利用该查找的子分类,再向下找该子分类的子分类。是一个递归查询的过程,查找条件当前分类的ID,去其他的分类parentid做比较。利用一个递归的程序,完成无限分类的展示树状列表实现:递归点
  • 标签:

无限分类

树桩列表

解决:1,缩进问题????2,排序问题

排序问题

递归查询的过程。

按照节点的父子关系(上下级关系)查找的分类的过程。

从,parent id==0的分类开始,查找其子分类。

利用当前找到的分类的ID作为条件查找条件parent id == ID,找到该分类的子类。

当找到每个子分类时,利用该查找的子分类,再向下找该子分类的子分类。

是一个递归查询的过程,查找条件当前分类的ID,去其他的分类 parent id 做比较。

利用一个递归的程序,完成无限分类的展示树状列表实现:

递归点:查找任意分类的子分类的操作方式一致的。

递归出口:当一个分类下没有子分类时,不需要做递归调用。没有找到parent id 与当前分类ID相等的记录。

编程实现:定义一个可以被递归调用的函数。参数有哪些?查找id。所有可能的分类数据数组,fetchAll(),二维包含了所有数据的数组。

处理返回值:定义一个数组,保存每次查找的记录。最好采用一个静态的局部变量,可以在递归调用中,可以共享数组。

Tips:可以使用引用传递 $row 节省参数的传递空间,提高执行效率。

缩进问题

????模拟一下递归的调用执行

????缩进的级别????与????找到该分类的递归调用函数的深度是一致的。

????记录下来递归调用的深度。为函数增加一个参数,每当递归调用,则参数值+1

????

????将深度记录到tree数组内的每个元素上:

????

项目中增加树桩分类效果列表

????修改模型,增加一个可以获得分类树状列表数据的方法model/CategoryModel.class.php

????

????增加getTree排序,缩进级别数据

????

????在控制器中,调用getTreeList()得到分类数据

????controller/back/CategoryController.class.php????listAction()

????

????在视图模板输出分类名称前,增加缩进的空格view/back/cat_list.html

????利用函数str_repeat();可以重复某个字符串N次:重复的结果 = str_repeat(字符串,次数)

分类添加

????应该由:添加表单,处理添加数据

添加表单

Controller

????back/CategoryController????addAction();

????

Model

????需要,但是已经存在。

View

????增加一个cat_add.html模板????view/back/cat_add.html????表单的请求action:

????

????循环输出所有的分类:

????

其他

????在列表页右上角,点击进入到添加分类:

处理表单数据

Controller

????controller/back/CategoryController.class.php????insertAction();

????

Model

????model/CategoryModel????增加一个indertCat方法

????

View

????没有视图层参与????测试

完整性的判断

????提示:分类名不能为空。分类名不能再同一个分类下重复。

????由模型层来实现:提升insertCat()这个模型方法:????model/CategoryModel

????此时需要处理错误,错误由模型发现,由控制器提示给用户。

????要模型层将错误原因传递给控制器

????在所有的模型上增加一个保存的错误信息的属性

????在基础模型类上做增加

????framework/Model.class.php

????

????发生错误后,记录信息到该属性上:

????model/CategoryModel

????

????此时控制器判断,是否成功,失败的话,利用模型得到错误信息,给出用户提示:

????controller/back/CateforyController????insertAction()

????

分类的编辑

编辑表单

控制器

????controller/back/CategoryController????editAction()

????

模型

????model/CategoryModel????增加一个getById的方法

????

视图

????增加一个编辑模板????view/back/cat_edit.html????form的action:

????

????展示原始数据:

????

????

????应该将当前分类的cat_id,作为隐藏于向下传递

????

其他

????在列表页面,为每个分类增加一个编辑连接,将分类的id传递:view/back/cat_list.html

????

????

处理编辑数据

控制器

????CategoryController????updateAction()

????

模型

????CategoryModel????updateCat()

????需要的业务逻辑是,要求不能将parent_id修改为其子分类的:

????

????

视图

????没有视图参与

分类的删除

控制器

????CategoryController????removeAction()

????

模型

????CategoryModel????removeCat()

????

????典型的,不能删除存在子类的分类

????

视图

????不需要

其他

????在列表页面增加链接

????移除的确认

????

  • 相关文章
发表评论
用户名: 匿名