A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

九、商品删除
1、这里的删除功能只是将商品从显示页面中删除并加入回收站,并不是真正意义上的从数据库将数据删除。然后在回收站的页面添加还原和彻底删除功能,彻底删除才是从数据库中讲商品信息的彻底删除。
2、首先给模板文件的删除增加链接,链接的地址使用U函数生成,然后在控制器中增加方法将商品数据表中的isdel字段修改为已经删除的状态,来实现删除功能。这里的删除是伪删除,通过get提交过来的商品ID进行商品的伪删除,然后在模型中增加方法来实现伪删除功能。
十、商品修改
1、在商品显示的index页面中为编辑按钮添加连接地址,地址使用U函数生成,然后在控制器中增加方法来实现编辑功能,接收通过get传递过来的值来确定要编辑的商品的ID
2、因为编辑页面类似于重新添加,所以可以将添加商品页面复制粘贴为编辑页面。在模板文件添加隐藏域,并给input选框的value赋予数据,使其显示出商品原有的信息。在控制器的方法中获取到商品的分类信息,并修改模板文件使其显示出来。
3、此时发现不能正确的获取到拓展分类,应该在控制器中来获取到拓展分类的ID,并修改模板文件使其显示。而有些商品过去不存在拓展分类,就不能添加拓展分类。此时应该在控制器中增加一个判断,如果之前不存在拓展分类时,就手动增加一个元素,来完善拓展分类的添加。
4、测试后发现,在商品描述中如果对字体格式进行修改过后,从数据库取出的数据会有html的标签,而浏览器不能正确的解析这些标签。这是因为,html标签在存入数据库中是以实体符号传递进数据库的。所以取出之后会显示异常。解决办法是在显示数据之前,对从数据库中取出的数据进行反转义操作,通过使用htmlspecialchars_decode方法对商品描述进行反转义操作。完成之后,文字及图片等数据显示正常。
5、在控制器中增加方法来实现将数据写入数据库,在编辑的方法中调用更新方法是数据写入数据库,并在模型中增加更新方法save
6、在更新数据时发现几个问题,货号问题,就是在用户提交数据时会进行判断,如果用户输入了货号会进行判断货号是否重复,没有输入货号会自动为其生成一个唯一的货号。但是进行修改操作时,如果用户不修改货号直接进行提交,会与之前本身的货号产生冲突而无法进行修改。拓展分类问题,如果用户修改了拓展分类,应该在数据库中删除之前的拓展分类信息,再写入新的拓展分类信息。图片文件上传问题,由于在提交数据时要求上传商品的图片,不上传则不允许提交入库,而在更新时还是会执行判断是否提交了商品图片,造成了多次上传图片文件而浪费资源。
7、首先解决货号问题,解决方法是,在模型中的更新方法中,在用户提交修改后的数据时增加一个判断,判断中将自身原本的货号排除在外。判断通过后才可以上传数据。
8、解决拓展分类的问题,首先应该通过商品的ID将之前的拓展分类信息通过delete方法删除,然后再添加新的拓展分类信息。这个问题的代码在之前添加方法中体现过,可以将之前的代码复制过来使用。图片上传的问题在稍后代码优化中解决。
9、在处理问题的过程中发现代码过于冗余,有部分方法的代码是需要重复使用的,比如数据入库等。为了使代码更加简洁,可以将数据上传功能的代码写入公共模型中,而所有的模块都继承至公共模块,所以可以直接调用。
10、将数据入库功能的代码写入到公共模块中,并封装成为一个方法以便后期的经常调用。并在之前所有使用到数据入库功能的方法中,调用这个方法来实现数据入库。
11、解决图片上传的问题,将图片上传和缩略图制作的方法封装成为一个单独的方法,以便后期调用。增加方法时,在图片上传时应该进行一个判断,如果之前没有上传过图片且上传的图片不合法,将会提交要求上传图片。然后将之前上传图片的方法中调用此方法,并将之前过去冗余的代码删除掉。

3 个回复

正序浏览
黑马南京 来自手机 初级黑马 2017-11-28 10:24:04
板凳
棒棒哒棒棒哒
回复 使用道具 举报
666666666666
回复 使用道具 举报
沙发嘿嘿嘿
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马