CI框架学习笔记第四天

来源:互联网 发布:dx 1vb大屏幕显示器 编辑:程序博客网 时间:2024/06/04 19:51

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

商品品牌的管理(主要学习文件上传实现)

通过控制器进入各个页面及调试

这里写图片描述

文件上传

CI中提供了一个上传类upload。文件上传类使用过程:1.配置相关参数必须配置参数upload_path,所以要先创建好该目录,并且要保证该目录是可写的。

这里写图片描述
这里写图片描述
2.载入上传类并初始化
这里写图片描述
3.完成上传动作
使用do_upload方法上传文件,成功返回true,失败返回false。如果失败了,则可以使用this>upload>displayerrors()使this->upload->data()方法获取文件信息。
注意:默认情况下上传的文件来自于提交表单里名为userfile的文件域,并且该表单必须是”multipart”类型。如果想在执行do_upload函数之前自定义自己的文件域名称,只需要将其作为do_upload的参数即可。
上传成功后,获取到文件的名称。
这里写图片描述
上传失败,返回错误信息。
这里写图片描述
对参数配置进行改进:
由于上传可能多次用到,这样一来,我们就必须在每个需要上传的控制器设置参数,CI提供了统一配置参数的功能。
在config文件夹下,新建upload.php设置相关的配置参数。
这里写图片描述
使用了配置文件之后,他就会自动加载。
直接在控制器中手动载入upload类即可。

商品类型管理(主要实现分页类的实现)

前期工作

添加商品类型定义一个商品类型控制器完成添加和显示类型。使用分页来显示类型信息CI中提供了一个分页类,用来实现分页效果。Pagination

分页类的使用步骤:

1.载入分页类在控制器内构造函数中载入分页类

这里写图片描述
2.配置相关信息
在模型定义个方法,以获取总的记录数
这里写图片描述
3.使用配置信息初始化分页类
这里写图片描述
4.配合数据库操作完成分页
这里写图片描述
在模型中定义一个方法获取分页数据
这里写图片描述
注意参照手册:
这里写图片描述
但是我们的url链接如下:
这里写图片描述
在默认的情况下,第三个参数为分页数。
这里写图片描述
在我们的url中是第四段,因为我们使用了文件夹的子文件夹的方式,有一个admin。
所以我们需要正确的设置这个值uri_segment
5.得到分页的信息
这里写图片描述
要注意:任何一个框架提供的分页类,只是实现了展示分页信息及链接,如下:
这里写图片描述
它并不能够对数据库本身进行分页显示,对数据本身分页,还需要使用数据库操作,使用limit语句。同时使用limit语句时需要加参数,limit(offset,limit)
如果只有一页,则不显示分页信息,CI分页信息默认显示效果如下:
这里写图片描述
对于这个展示效果,我们可以加以改进,通过参数配置来设置:
这里写图片描述
展示的效果如下:
这里写图片描述
对于这个展示效果,还是不满意,可以扩展分页类。
参照手册:
这里写图片描述
扩展步骤:
1.复制system/library/pagination到application/library/pagination
这里写图片描述
2.编辑Pagination.php
这里写图片描述
页面显示效果:
这里写图片描述
CI的分页类,还可以针对链接,自定义添加标签,和CSS类。

商品属性管理

编辑视图文件

编辑相应的视图文件,并通过控制器链接到相应的视图文件。

编写属性的控制器

获取商品类型信息并分配到视图
这里写图片描述
这里写图片描述
这里写图片描述
此处需要增加js实现效果:
这里写图片描述
添加JS代码:
这里写图片描述
这里写图片描述

商品添加及展示

显示商品的添加、显示及编辑页面

让tab选项卡动起来,应该是js的内容

这里写图片描述
在尾部的js中,更改其路径
这里写图片描述
在线编辑器的引入:
这里写图片描述
找到引入fckeditor的位置,如下:
这里写图片描述
首先将fckeditor包拷贝到application/third_party下,然后引入
这里写图片描述
效果如下:
这里写图片描述

商品属性展示

当选择一个商品类型后,对应着商品类型的所有属性将被罗列出来。

这里写图片描述

此处是局部更新,需要使用AJAX实现。直接使用jQuery实现。引入jQuery,将jQuery文件拷贝到public/js下,这样前后台皆可运用这个jQuery文件。在视图文件中引入该jQuery文件。查阅jQuery的参考手册:

这里写图片描述
对应的js代码:
这里写图片描述
商品类型的显示:
在goods控制器中的方法, 编写create_attrs_html方法实现AJAX显示对应商品类型的属性:
这里写图片描述

public function create_attrs_html(){        #获取类型的id        $type_id = $this->input->get('type_id');        $attrs = $this->attribute_model->get_attrs($type_id);        #根据获取到的属性值构造html字符串        $html = '';        foreach($attrs as $v){            $html .= "<tr>";            $html .= "<td class='label'>".$v['attr_name']."</td>";            $html .= "<td>";            $html .= "<input type='hidden' name='attr_id_list[]' value=''>";            switch ($v['attr_input_type']) {                case 0:                    #文本框                    $html .= "<input type='text'                         name='attr_value_list[]' value=''>";                    break;                case 1:                    #下拉列表                    $arr = explode(PHP_EOL, $v['attr_value']);                    $html .= "<select name='attr_value_list[]'>";                    $html .= "<option value=''>请选择</option>";                    foreach ($arr as $v){                        $html .= "<option value='".$v."'>".$v."</option>";                    }                    $html .= "</select>";                    break;                case 2:                    #文本域                    break;                default:                    ;                    break;            }            $html .= "</td></tr>";        }        echo $html;       }

读取商品分类信息

读取商品品牌信息
这里写图片描述

完成商品添加操作

分析要完成的任务: ![这里写图片描述](http://img.blog.csdn.net/20170604095629586?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjE4MDY2MjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)  ![这里写图片描述](http://img.blog.csdn.net/20170604095641023?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjE4MDY2MjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) ![这里写图片描述](http://img.blog.csdn.net/20170604095654727?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjE4MDY2MjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)这个商品属性的值,是要插入到goods_attr表中。在goods模型中,定义一个方法完成商品添加的动作,注意添加商品的返回值,后边后用到添加的id。

这里写图片描述
默认情况下,确定按钮不能用。
这里写图片描述
稍作修改。
图像处理类的使用,配置参数:
这里写图片描述
载入并初始化:
这里写图片描述
使用缩略图方法完成缩略处理:
这里写图片描述
缩略成功后,得到缩略图的名称。
这里写图片描述
然后添加商品成功的同时,将商品的属性插入到商品与属性的关联表中。
这里写图片描述
在模型中定义该插入方法:
这里写图片描述
在goods的模型中,写一个方法完成获取推荐商品信息:
这里写图片描述