CI框架学习笔记第五天

时间:2024-10-27 13:52:29

此文章为自己书写,在Word上做的笔记,然后拷贝到这上边的,无任何抄袭。另外若是程序有任何问题可以评论,也可私信我。
若是想看整个学习笔记代码和数据库可点击此处(包含个人书写的项目代码及数据库文件)。

商品展示(主要是前台)

展示首页

将前台模板文件拷贝到themes/default文件夹中。

这里写图片描述

编写首页控制器

这里写图片描述
注意其位置,在application/controllers下。

添加类别模型方法

这里写图片描述
这里写图片描述
这里写图片描述

添加商品模型方法

这里写图片描述

商品分类导航展示

首先看分类导航的HTML结构。

这里写图片描述
关键就在于如何将数据库中的数据,进行相应的处理,然后分配到模板,进行展示。
这里写图片描述
如果能构造一个三维数组,如下
这里写图片描述
在模型中定义相应的方法,来完成上述任务
这里写图片描述
这里写图片描述
在控制器中,
这里写图片描述
在模板中,遍历数组,并输出分类信息
这里写图片描述
这里写图片描述
商品展示
推荐商品展示
在goods_model中,写一个方法
这里写图片描述

在模板文件中,进行遍历
这里写图片描述
这里写图片描述

商品详细页

定义一个goods控制器
这里写图片描述
模型中定义方法获取 商品信息
这里写图片描述
在视图中,输出商品数据
这里写图片描述
这里写图片描述

登录与注册

改进两个小地方

1.设置默认首页
这里写图片描述
直接输入http://localhost/cishop就可以访问前台首页
2.一次载入多个视图
第一种方式:在中加载视图
这里写图片描述
第二种方式:直接在视图中相应的位置进行加载
这里写图片描述
question:为什么可以在视图中可以直接使用 this this是超级对象,视图页面在被包含的控制器中。
利用session实现用户状态的跟踪。
定义一个user控制器:
这里写图片描述

注册

这里写图片描述
这里写图片描述
在模型中的操作:
这里写图片描述

登录

在控制器中的操作:
这里写图片描述
在模型中的操作:
这里写图片描述
在视图文件中做一个判断:
在视图中如何读取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,已经内部实现了)
这里写图片描述
至此,项目该说的都说完了,其余的就是功能的丰富了!加油,骚年!