您的位置:首页 > 其它

CI框架学习笔记第五天

2017-06-13 16:57 190 查看
此文章为自己书写,在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,已经内部实现了)



至此,项目该说的都说完了,其余的就是功能的丰富了!加油,骚年!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息