黑马程序员技术交流社区

标题: 【南京PHP】电商项目流程文档(二) [打印本页]

作者: 黑马小奇    时间: 2017-11-15 18:22
标题: 【南京PHP】电商项目流程文档(二)
四、商品分类管理
1、首先创建数据库和分类的数据表,创建表的原则,每张表都要有主键,每个字段不允许为空且给定一个默认值,建表的数据类型尽量选择小的类型。
2、然后配置T中与数据库交互的信息,设置数据库、主机地址、数据库名、用户名、密码、端口和表前缀。
3、为了后期修改方便,应该修改继承链的关系,不然每次都要修改TP源代码,可以创建一个公共控制器,公共控制器继承至TP源代码,然后其他所有控制器继承至公共控制器。在controller文件夹下创建CommonController.class.php作为公共控制器,公共控制器继承了Controller控制器,然后修改其他控制器的继承关系,使其他控制器都继承空公共控制器。
4、同时也应该增加公共模型,理由与方法与公共控制器相同。
5、实现商品分类的添加功能,创建相应的类,完善其中的方法来显示模板,同时创建Category文件夹,将模版文件复制到该文件夹下,然后修改其中的cssjs的路径。页面显示正常后,应该增加相应的方法来实现数据入库。创建CategoryModel.class.php文件,脚本中定义一个数组,数字中保存表中对应的字段,然后通过$_validate来完成自动验证,验证通过后将数据写入数据库。
6、然后发现下拉选框不能正常显示数据,此时应该增加方法来获取数据。在控制器中调用模型来获取数据,模型中创建getCateTree方法来获取数据,创建getTree来格式化数据。由于获取分类的过程中,需要不断的获取自身的ID和父分类的ID,整个过程可以用递归方法来实现。然后修改模本文件,并使用volist标签来循环遍历显示出数据。
7、实现继承模版,页面中模版样式都相同,所以可以使用公共模版来减少代码量。在视图文件下创建Public文件夹,用来存放公共模板文件代码,将内容信息删除同时增加block块来管理代码。然后修改之前的模版文件,将除了信息的代码修改为block块并继承过来。
8、完成商品分类列表的展示,首先在控制器中调用getTree方法来获取数据,然后赋值给模版并显示,然后将模版文件复制到视图下的Category文件夹下,修改模版文件中的路径,使其显示正确。
9、完成商品分类的删除功能,修改模版文件中删除连接的地址,使用U函数生成地址,然后在控制器中增加方法来实现删除,通过I函数获取到要删除的分类的ID,然后调用模型中的方法来实现删除。同时要注意,分类下有子分类时不允许删除该分类,需要进行判断其下是否还有子分类,有则不能删除。
10、完成商品分类的编辑,首先修改模版文件中的修改连接的地址,同样使用U函数生成地址,在控制器中增加方法来显示分类的信息,因为修改操作要经常使用,可以将方法写入公共模型。在公共模型中增加方法,通过ID来获取数据。然后增加一个隐藏域来进行提交操作。在控制器中接收数据并进行修改操作,同时在模型中增加修改数据的方法。
11、完成编辑功能之后,发现其中存在一些问题,可以将自己编辑成为父分类以及可以将父分类设置为自己的子分类,因此需要修改之前的方法。修改getCateTree方法使其可以获取到该分类下的所有子分类并将所有分类放入到一个数组中,同时在修改之前进行判断,如果提交的数据存在于以前的数组中则不能进行修改。
五、商品的管理
1、首先应该创建商品的数据表,在首页中查看到有关于商品的信息,并将所有信息都体现在数据表中,比如商品ID、名称、货号、分类ID、市场售价、本店售价、商品图片、是否热卖、推荐、新品、是否被删除、是否已上架、添加事件等,为了方便后期的查询,还需要设置几个索引。
2、显示商品的添加页面,创建控制器GoodsController.class.php,继承至公共控制器,增加add方法来加载模版文件。然后在视图下创建Goods文件夹,讲模版文件复制到该文件夹下,并修改其中的信息。在控制器中的add方法中调用getCateTree方法来获取所有分类信息,然后模版中使用volist来显示数据。
3、创建商品模型GoodsModel.class.php,继承至公共模型,自定义一个数组,保存数据表中的字段信息,并使用$_validate来实现自动验证,自动验证的第三个参数可以使用TP自带的验证规则来完成。currency用来匹配货币。验证通过后使用控制器调用模型来实现数据的写入。
4、数据写入后发现在商品写入时没有写入时间,而且也没有对货号进行验证。所以在模型中给要增加相应的方法来处理以上问题。在模型中增加钩子方法,方法中可以直接使用time()方法来添加时间,也可以使用TP自带的自动完成方法来添加。然后处理货号问题,如果用户没有输入货号,那么需要自动生成货号,如果用户输入了货号,就需要验证货号是否与之前的货号重复。判断通过之后将数据写入数据库。
5、添加商品页面中,商品描述可以使用富文本编辑器。将下载好的富文本编辑器的源代码,复制到Public目录中新建的ueditor文件下,然后在模版文件中引入编辑器的js源代码,修改其样式并在最后初始化编辑器。
6、实现图片的上传以及缩略图的制作,手动创建用来存放上传文件的根目录 Uploads。一定不要忘了加s。并在钩子方法中增加方法来实现图片上传功能,并根据上传的图片制作出相应的缩略图。在代码中,图片的路径可以不使用斜线/,但是在html代码中必须要使用斜线/,用来表示域名所在的根目录。


作者: 黑马小奇    时间: 2017-11-15 18:24
沙发自己坐
作者: 秒杀女神    时间: 2017-11-17 13:54
小伙子,可以的
作者: 黑马南京    时间: 2017-11-28 10:22
好厉害给跪了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2