黑马程序员技术交流社区
标题: 【南京PHP】电商项目流程文档(十二) [打印本页]
作者: 黑马小奇 时间: 2017-11-26 21:23
标题: 【南京PHP】电商项目流程文档(十二)
七、商品评论功能1、要实现商品的评论功能,首先应该创建对应的数据表来存储商品评论的数据,具体表中的字段为会员ID,商品ID,评论时间,评论内容,评论分值等。
2、数据表创建完成之后就要实现商品评论的入库操作,首先修改评论的表单,将表单的提交方式改为post,提交地址使用U函数生成。然后将品论的星级的单选项的name改为相同的名字,value值修改为对应的星级,增加隐藏域用来提交数据。
3、在商品控制器GoodsController.class.php中创建方法来实现评论数据的入库功能,实例化对应的类之后进行判断,判断之后将数据写入数据库。然后创建评论模型CommentModel.class.php,模型直接继承TP自带的模型而不是公共模型,因为后面的字段要设置为受保护的,所以整个模型不应该继承公共模型。模型中定义受保护的字段,字段与数据表中的字段相同,然后定义一个前置的钩子方法,用来获取评论的时间和用户的ID标识。
4、修改模板文件,使其在用户没有登录的情况下不显示评论表单,在评论表单的标签前加notempty标签来判断用户ID表示是否为空,为空则证明用户没有登录,则不显示评论表单。
5、评论的列表显示,首先完成漂亮的分页功能,即在商品控制器GoodsController.class.php中调用方法来执行分页功能,然后在评论控制器CommentModel.class.php中添加方法来实现分页功能,具体的分页功能的代码与过去的相同,所以可以将之前的代码赋值粘贴过来使用。然后修改模板文件,然后修改模板文件,将具体的评论时间,评论ID,评论内容等数据显示出来。
6、在测试中发现,当点击翻页按钮时,会自动进行刷新,而且页面会跳转到页面最上部分,影响了用户体验,所以应该处理分页的跳转问题。该问题可以用锚点连接来实现,在具体对的评论部分增加锚点的定位符,然后修改TP分页类的config属性,增加字段是否需要使用锚点以及使用的锚点的名称,是否需要锚点默认定义为false。修改TP分页类总的URL方法,方法中判断是否需要锚点,并返回相应的锚点的地址,最后修改品论模型CommentModel.class.php,调用方法并将默认的启用锚点更改为true。
7、实现商品买家印象功能,要实现这个功能,首先应该有一个对应的数据表来存储数据,数据表字段分别为商品ID,印象名称和印象出现的次数。修改评论表单,增加买家印象的表单。同时增加隐藏域来提交表单。然后实现买家印象的入库操作,在后置的钩子函数中进行买卖印象的入库功能,方法中进行判断,如果当前印象在数据库中存在,就更新对应的数量,如果不存在,就写入数据库中。
8、商品详情页显示买家印象,在商品控制器GoodsController.class.php中获取数据,将获取到的数据赋值给模板进行显示,在获取数据时要注意,由于页面显示的个数有限,所以在执行SQL语句时要增加limit对数据进行限制,然后再使用连贯操作查询数据。
八、商品分类列表显示
1、首先显示商品的基本信息,创建控制器CategoryController.class.php,继承至公共控制器,在控制器中调用方法来获取数据,并通过assign和display方法来渲染模板。在商品模型GoodsModel.class.php中添加方法来实现列表的分页功能,具体的分页功能与之前的相同,可以将之前的分页代码赋值粘贴过来直接使用。然后修改模板文件的测试数据,将其修改为对应的变量,使其显示正确。
2、获取评论数量及销量数,首先修改表结构,增加评论总数量和总销量的字段。修改评论的发布实现评论总数的修改功能,实例化模型,并通过连贯操作来增加评论的数量。然后修改下单成功之后页面显示的销量数量。首先需要将商品表中的总库存的数量减少,同时增加商品对应的销量,然后根据商品的单选属性的组合来减少对应的库存。
3、修改商品模型GoodsModel.class.php中定义的字段信息,将新增的两个字段添加进去。然后修改模板文件来显示具体的评论总数。
4、实现首页中的四种排序方式,修改模板中四种排序的链接地址,地址使用U函数生成。
然后在公共文件Common下创建公共方法function.php文件,用来存放一些公共代码,使整个项目中都可以随意使用这个函数。在方法中创建方法,用来生成商品列表中连接地址。将目前的排序字段保存到变量中,然后将地址返回出来。
5、实现价格筛选功能,首先显示出具体的价格区间,在商品模型GoodsModel.class.php中计算出价格的筛选区间,首先计算当前分类下对应的价格筛选条件,具体要先获取当前分类下所有商品对应对的最大值与最小值,然后获取当前分类下所有的商品ID组合,并根据当前分类下的商品个数判断是否需要显示出这个区间,然后通过判断极端出具体显示的价格区间的个数,然后将具体的每一个价格区间对应的值保存到变量中。最后进行循环遍历算出每一个价格区间对应的开始价格与结束价格,并组装每个价格区间对应的开始值和结束值。将具体的价格筛选条件返回出去并修改模板文件将其显示。
6、实现具体的价格筛选,修改模板文件中具体对应的链接地址,地址使用自定义的地址生成函数生成,然后修改之前自定义的地址生成方法,使其可以根据那个区间进行生成地址。修改模型实现具体的价格查询。通过I函数的get方法接收传递过来的价格区间信息,并将接收的数据转换为数组格式,并将其作为查询条件连接数据库进行查询。
7、实现属性筛选功能,首先显示出属性筛选条件,具体的实现方法与价格筛选相类似,可以复制粘贴过来修改方法中的具体字段名,并将最后的数据返回给模板并显示出来。
至此整个项目的功能基本已经实现,接口中的短信验证、邮箱验证以及QQ和微博的第三方登录暂时没有计算在项目中,所以没有写进文档中,整个电商项目就此结束。
作者: 沈唁 时间: 2017-11-27 15:04
厉害了 666
作者: 黑马南京 时间: 2017-11-28 10:29
吼吼吼吼吼吼吼
作者: 一匹英俊的小马 时间: 2017-12-6 15:10
不明觉厉哈哈啊哈
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |