此文章为自己书写,在Word上做的笔记,然后拷贝到这上边的,无任何抄袭。另外若是程序有任何问题可以评论,也可私信我。
若是想看整个学习笔记代码和数据库可点击此处(包含个人书写的项目代码及数据库文件)。
商品展示(主要是前台)
展示首页
将前台模板文件拷贝到themes/default文件夹中。
编写首页控制器
注意其位置,在application/controllers下。
添加类别模型方法
添加商品模型方法
商品分类导航展示
首先看分类导航的HTML结构。
关键就在于如何将数据库中的数据,进行相应的处理,然后分配到模板,进行展示。
如果能构造一个三维数组,如下
在模型中定义相应的方法,来完成上述任务
在控制器中,
在模板中,遍历数组,并输出分类信息
商品展示
推荐商品展示
在goods_model中,写一个方法
在模板文件中,进行遍历
商品详细页
定义一个goods控制器
模型中定义方法获取 商品信息
在视图中,输出商品数据
登录与注册
改进两个小地方
1.设置默认首页
直接输入http://localhost/cishop就可以访问前台首页
2.一次载入多个视图
第一种方式:在home.php中加载视图
第二种方式:直接在视图中相应的位置进行加载
question:为什么可以在视图中可以直接使用
this?
this是超级对象,视图页面在被包含的控制器中。
利用session实现用户状态的跟踪。
定义一个user控制器:
注册
在模型中的操作:
登录
在控制器中的操作:
在模型中的操作:
在视图文件header.html中做一个判断:
在视图中如何读取session?
注意:
我们不能使用
SESSION。应该使用
this->session->userdata方法。
注意:登录成功之后,我们关闭浏览器,然后再打开浏览器,访问首页
仍然处于登录状态,为什么?
session有效期为7200秒,所以即使关闭浏览器仍然处于登录状态。
但是关闭浏览器时,将变为0。
但是此处与CI2.0框架有所不同,CI2.0框架需要设置参数来设置关闭浏览器清除session数据。通过配置$config[‘sess_expire_on_close’]=true;设置。
购物车的实现
购物车功能的通常做法?
一般分为两种情况,在用户未登录的情况下,提供购物车功能,此购物车功能有限,如果用户下次浏览的时候,购物车中的内容就不复存在。这种购物车一般是通过session或者cookie实现的。
用户登录之后,提供的购物车功能。这种购物车功能强大,可以保存以前的信息,这样用户下次登录之后,仍然可以看到以前保存在购物车中的信息,这种购物车一般是将信息保存在数据库中。
如果想要实现一个完美的购物车,给用户提供一个完美的体验,就需要将这二者结合在一起。
所以,我们需要针对购物车功能做两个方面的操作。一是会话机制实现,另一个是通过模型来操作数据库实现。
我们这里只实现第一种,即使用会话实现购物车功能。
CI提供了一个购物车类,我们使用cart来实现我们的购物车功能。
CI的cart类是基于session的。
新建一个cart控制器。
载入购物车类。
查看购物车。
$this->cart->contents();
添加商品到购物车。
设置添加动作的表单。
所以需要对此处进行改进。替换cart类。(仅仅针对2.*版本,3.0及以上版本不存在此问题)
将system/library/cart拷贝到application/library中,找到如下代码:
这段代码的作用就是过滤中文的,也就是说,如果有中文,则不插入。
将这段代码注释掉。
在头部显示的购物车中的数量,用$this->cart->total_items();方法。
显示结果:
在Cart文件中找到如下代码:
更改如下:
加入到购物车代码:
删除购物车代码:
在我们向购物车中添加商品时,如果添加了已经存在的商品,会出现错误。(比如想追加两件商品,但是将数据转换成为了两件,所以需要处理一下),代码如下:(这只是针对CI2.0,个人使用CI3.0,已经内部实现了)
至此,项目该说的都说完了,其余的就是功能的丰富了!加油,骚年!