CI框架学习笔记第三天

来源:互联网 发布:js数组push进前面 编辑:程序博客网 时间:2024/06/04 01:10

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

表单验证类

form_validation类。

首先加载form_validation类。
这里写图片描述
设置验证规则
通过set_rules方法进行验证。
这里写图片描述
运行验证
这里写图片描述
获取验证信息
获取验证的错误信息。
这里写图片描述
获取的错误信息在页面中显示。
这里写图片描述
关于上面的提示,是英文的,我们需要将其转换成中文。这里涉及到多语言问题。
修改提示错误信息的语言问题
这里写图片描述
将该文件复制一份到application/language下的chinese(需要自己创建)文件夹下,然后进行修改:
这里写图片描述
同时更改配置文件,将语言设置为中文。
这里写图片描述
错误信息为:
这里写图片描述
需要修改一个地方:
这里写图片描述
修改后的页面错误信息显示:
这里写图片描述

商品类别的管理(主要学习数据库的CRUD操作及页面分级显示)

注意:使用无限分类的思想。定义category控制器,载入对应的页面。

这里写图片描述
修改视图的css和js的引用路径。将添加、编辑和列表页面的css/js/images做相似的修改。同时修改路径跳转页面。
这里写图片描述
展示商品类别。

显示商品分类

模型类代码
书写商品分类模型,从数据库中读取分类信息。将表名定义成常量,同时在构造函数中加载数据库:
这里写图片描述
从数据库中获取分类的信息,并调用方法生成一个排好序的分类对象并返回:
这里写图片描述
通过传递过来的分类数组信息和父ID和等级的ID进行分类重组,通过递归思想返回一个新的重组好的数组。
这里写图片描述
控制器类代码
在分类的控制器类中调用模型中的分组方法,生成分组对象,并将分组对象传递到页面中:
这里写图片描述
页面代码
然后在列表页面中通过php的foreach标签进行循环显示:
这里写图片描述

添加商品分类

首先在控制器中获取到分类信息(与列表显示相同),将其加载到页面的select标签中。

控制器代码
调用模型的方法获取到重组后的分类信息。
这里写图片描述
页面代码
在页面中进行遍历,显示分类的层级关系。
这里写图片描述
同时设置跳转到的方法:
这里写图片描述
控制器添加方法代码

//进行添加操作    public function insert(){        //设置添加规则        $this->form_validation->set_rules('cat_name','分类名称','trim|required');        if($this->form_validation->run()==false){            #未通过验证            $data['message'] = validation_errors();            $data['url'] = site_url('admin/category/add');            $data['wait'] = 3;            $this->load->view('message.html',$data);        }else{            #通过验证            $data['cat_name'] = $this->input->post('cat_name',true);            if($this->input->post('parent_id')!=null){                $data['parent_id'] = $this->input->post('parent_id',true);            }            if($this->input->post('unit')!=null){                $data['unit'] = $this->input->post('unit',true);            }            if($this->input->post('sort_order')!=null){                $data['sort_order'] = $this->input->post('sort_order',true);            }            if($this->input->post('cat_desc')!=null){                $data['cat_desc'] = $this->input->post('cat_desc',true);            }            if($this->input->post('is_show')!=null){                $data['is_show'] = $this->input->post('is_show',true);            }            if($this->category_model->add_category($data)){                #添加成功                $data['message'] = '添加商品类别成功';                $data['url'] = site_url('admin/category/index');                $data['wait'] = 3;                $this->load->view('message.html',$data);            }else{                #添加失败                $data['message'] = '添加商品类别失败';                $data['url'] = site_url('admin/category/add');                $data['wait'] = 3;                $this->load->view('message.html',$data);            }        }    }

分类模型的添加操作数据库代码
这里写图片描述

编辑商品分类

设置编辑的url
这里写图片描述
在模型中定义一个方法,根据id获取单条分类记录信息
这里写图片描述
如何获取cat_id
这里写图片描述
此处参数的获取,有两种方法,一是直接在方法中用参数接收,二是使用uri的方法,此处使用的是第一种方法
在控制器中,载入编辑表单
这里写图片描述
视图中,进行相应的判断
这里写图片描述
不能将当前分类放到当前分类及其子分类。
这里写图片描述
如何解决?
思路:对于所编辑的分类,首先找到其子分类,然后做一个判断,如果选择的分类是其本身或子分类,则不允许更新。
通过编辑表单的隐藏域,将cat_id传递
这里写图片描述
通过类别控制器进行相应的判断
进行相应的判断,不能让该分类放到其本身上和其子分类上(在类别控制器中进行检验)
这里写图片描述
书写模型更新操作
这里写图片描述
书写类别控制器更新操作
首先获取表单提交信息,未截全,上边还有一部分未截取。
这里写图片描述

1 0
原创粉丝点击