此文章为自己书写,在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传递
通过类别控制器进行相应的判断
进行相应的判断,不能让该分类放到其本身上和其子分类上(在类别控制器中进行检验)
书写模型更新操作
书写类别控制器更新操作
首先获取表单提交信息,未截全,上边还有一部分未截取。