CI框架学习笔记第四天

时间:2023-02-04 20:51:05

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

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

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

CI框架学习笔记第四天

文件上传

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

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

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

前期工作

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

分页类的使用步骤:

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

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

商品属性管理

编辑视图文件

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

编写属性的控制器

获取商品类型信息并分配到视图
CI框架学习笔记第四天
CI框架学习笔记第四天
CI框架学习笔记第四天
此处需要增加js实现效果:
CI框架学习笔记第四天
添加JS代码:
CI框架学习笔记第四天
CI框架学习笔记第四天

商品添加及展示

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

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

CI框架学习笔记第四天
在尾部的js中,更改其路径
CI框架学习笔记第四天
在线编辑器的引入:
CI框架学习笔记第四天
找到引入fckeditor的位置,如下:
CI框架学习笔记第四天
首先将fckeditor包拷贝到application/third_party下,然后引入
CI框架学习笔记第四天
效果如下:
CI框架学习笔记第四天

商品属性展示

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

CI框架学习笔记第四天

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

CI框架学习笔记第四天
对应的js代码:
CI框架学习笔记第四天
商品类型的显示:
在goods控制器中的方法, 编写create_attrs_html方法实现AJAX显示对应商品类型的属性:
CI框架学习笔记第四天

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;
}

读取商品分类信息

读取商品品牌信息
CI框架学习笔记第四天

完成商品添加操作

分析要完成的任务:
![这里写图片描述](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。

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