添加商品图片异步上传
1.1、查看layUI使用方式
①引入对应的js文件
②查看文件上传使用方式
1.2、项目中使用文件上传
①将资源文件拷贝到项目中
②引入layui的js文件
③修改文件上传的type类型
④对文件上传绑定切换事件
⑤创建upload方法
先抓包结果如下
⑥修改模板增加img显示上传结果
⑦修改js处理文件上传成功
⑧修改商品添加的HTML
⑨修改js
⑩修改添加的前置钩子函数删除文件上传代码
由于目前文件上传使用了异步的方式因此此处的代码多余
1.3、使用ajaxReturn返回结果
①查看ajaxReturn方法的使用方式
②修改upload方法使用ajaxReturn
商品列表
2.1、实现显示商品的列表
①在控制器中增加方法
②在模型中增加listData方法获取数据
③拷贝模板
④修改模板
2.2、实现分页显示商品列表
①修改listData方法
②修改模板
修改循环的变量
修改使用分页
2.3、获取分类名称
修改listData方法链表查询分类名称
2.4、商品搜索
2.4.1、显示搜索的分类
①index方法获取所有的分类信息
②修改模板显示分类
2.4.2、根据搜索的提交获取数据
根据条件对商品进行搜索本质就是表单提交。对于表单提交想要去获取到对应的条件的商品信息就需要去组装sql语句中的where条件
修改listData方法
2.5、对商品列表进行优化
2.5.1、实现方式
使用替换的方式将链表查询拆分成为两次sql查询(第一次查询后期可以使用高速内存缓存系统加速)
- 先获取所有分类的信息
- 根据页码获取到当前页的商品信息(单表查询)
- 对商品信息进行循环根据分类的id使用第一次查询结果进行替换
2.5.2、具体代码操作
①修改index方法传递分类信息作为参数
②修改模型下的listData方法
2.6、缓存使用(重点)
2.6.1、缓存使用的原理
- 当读取数据时。优先查询缓存系统(文件、内存)中的内容,如果读取到了数据直接使用。如果没有读取到在查询数据库获取数据,然后在将数据写入到缓存系统中
- 当修改数据时,需要对缓存系统中的内容进行更新或者删除操作
2.6.2、TP中的S函数使用
2.6.3、在项目中使用S函数
①修改listData方法使用缓存
②查看效果
2.6.4、针对所有的分类的使用缓存
①修改getTree方法
②修改listData方法
③针对分类的添加对缓存进行更新
④分类到的修改更新缓存
⑤删除分类更新缓存
2.7、实现状态的点击切换
①修改商品列表的模板
②增加函数实现ajax
③创建方法处理请求
④修改模板中代码实现图片的切换
商品删除
①增加删除的连接地址
②增加方法进行删除
③修改模板
④修改Goods模型下的where条件
去掉了上下架的条件
⑤再次修改模板
商品回收站
4.1、商品回收站列表显示
①创建方法
②修改模型获取数据方法
③拷贝模板并且修改
在index模板基础上修改操作即可
4.2、商品的还原功能
①修改回收站商品列表
②修改dels方法
4.3、彻底删除
①修改模板对彻底删除增加连接地址
②添加方法实现删除
③实现模型下的删除方法
商品编辑
5.1、显示原始商品信息
①创建方法获取原始数据
②拷贝添加模板并且修改
5.2、实现修改入库
①修改编辑的方法处理表单提交
②增加方法实现修改
商品类型
6.1、商品类型介绍
商品归属于某一个分类。通过分类可以方便用户在前台界面中对商品进行筛选。当描述商品信息时,需要将商品的具体信息表述出。例如手机又cpu、内存、存储大小,衣服有颜色,尺码。对于要描述的内容可以称为属性。
为了描述出属性信息,可以在商品表中使用字段记录对应的信息。如果使用此方式会导致数据表特别庞大并且有很多字段时无用的。
因此可以将属性信息保存到一格单独的数据表中(每一条记录就是一个属性)。如果只有商品表跟属性表还不能完整的描述出商品信息
因此可以对属性做一个归类。归类及抽象一个类型出来。一个商品属于某一个类型就可以使用类型下对应的属性对商品进行描述
注意:类型只是在后台中使用,目的是为了方便管理属性
6.2、创建类型数据表
CREATE TABLE `shop_type` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`type_name` varchar(255) NOT NULL DEFAULT ” COMMENT ‘类型名称’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
6.3、类型的添加与修改
①控制中实现根据添加与修改时显示模板
②模板中展示出数据
③创建自定义模型
④实现数据的入库