TP商城攻克第四天

继续更新,到了第四天,前面大部分基础的功能都已经实现了,所以现在便开始实现分类功能,而在商城项目之中的分类一般都是无限极分类,意思就是没有固定的等级分类,而是可以自行添加、设置,没有下限等级要求。

其中商品分类便是需要这一种分类的作用。商品列表中可以根据分类搜索商品

a) 搜索一个分类下的商品时,这个分类所有子分类下的商品也应该被搜索出来

b) 搜索时要考虑商品的主分类和扩展分类

紧接着便开始和前面差不多的步骤,分别是建表,然后建立相对应的模型和控制器,其中在模型之中建立相对应的方法,其中无限极分类需要一个寻找下一级,并且无限循环,一直到没有下一级为止的方法。


随后为了这一些下一级建立一个树形方法,为这一些子分类标记相对应的等级,在后面的时候能够更好的区别,并且展示出来。


随后便在商品分类的控制器之中调用相对应的模型,在模型之中调用相对应的方法。

下一步便是将建立操作商品分类的页面,有添加,更改,删除和展示,大致上的是设置和前面几个是一致的,而大部分商城系统的分类都是一致的,所以在这里我们便直接导入即可。


而在建立好了这一些之后便要考虑一些细节方面的操作,比如在删除的时候,删除一个分类的时候,需要检测其下方还有没有下一级分类,如果有的话,需要将其一起删除。

在这一种情况下便要使用删除的钩子方法了。



做完了这一些之后,便是在控制器之中添加相对应页面所需要的方法,使其能够正常添加,而这个也是和前面几个差不多的,这里不在多讲。

紧随着便是修改那个模板给予的页面表单,利用前面所说的树形方法将需要的分类都展示出来,并且使用'-'区别开每个等级之间的分类


修改表单和这一个添加表单所需要的基本一致,所以跟着制作即可。


做完了这一些分类所需要的代码之后,我们便要将商品分类表和商品表关联起来,而在这里,我们需要知道商品和分类之间的关系。

商品与分类的关系

需求:

1. 一件商品必须属于一个主分类         【一对多】

2. 一件商品可以同时属于多个扩展分类   【多对多】

我们修改一下商品表上面的结构,添加外键,使其可以和商品分类表可以相互关联起来。

在商品控制器之中调用商品分类模型,然后调用树形方法,让对应的分类内容能够在商品表单之中展示出来



随后记得要在商品模型之中添加相对应的验证,比如在添加商品的时候,必须添加相对应的主分类


随后便在相对应的前面的那一个主页面展示方法之中修改一下,增加相关的分类代码。


并且更改相对应表单所需要的数据,所需要的下拉框页面代码直接复制上面所使用过的代码即可。

在做完了主分类所需要的一切之后,便开始扩展分类的设计。


效果如上图,扩展分类可以有很多个,因为扩展分类和商品之间的关系是多对多的关系,一个商品可以拥有多个扩展分类,一个扩展分类可以拥有多个商品。

随后建立相对应的扩展分类表,并且在相对应的表单之中添加扩展分类的代码。


扩展分类和主分类的方法基本相同,所以大部分直接引用主分类那一边的代码即可。

只不过在这里需要再一次修改search的代码,将扩展分类如同主分类一般展示出来,只不过主分类只有一个,而扩展分类可以有多个。



这样便完成了扩展分类所需要的代码了,做完了这一些之后,我们便要考虑其他的事情,比如在查找一个分类的商品的时候,需要将所寻找的分类ID下面的所有商品ID都寻找出来,并且将其展示出来。

而这一个方法,我们可以发觉在一个正常的商城系统之中会经常用到,所以我们便将其放在公共目录之下,这样可以让其他模块都可以使用到这一个方法,只不过需要注意的是这一个方法是需要让主分类和扩展分类都能够同时查找出来的,所以需要考虑到两边都能够同时查找出来。



随后我们只需要在search这一个方法调用这一个方法即可。


而在做完了这一些之后,分类方面的代码也是基本完成了,剩下的便是修改一些在商品方面的细节,比如在删除商品的同时,也需要将相对应商品的扩展分类和主分类删除,否则会出现报错。

而添加的表单则只需将前面分类下拉框之类的代码复制过来,并且将其调用过去即可,在修改商品页面提交的时候,则是只需要将原来分类的信息删除,然后添加上这一次新的即可。

而在这里开始,我们注意到了高并发机制的问题,所以添加的PHP文件锁机制,需要想要详细了解的,可以去我另外一篇博文观看


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值