天天看点

CI3.0笔记

一.CI框架的指定URL操作

除了常规的Module/Controller/Action外,我们还可以在Application/config/routes.php 配置指定的操作:

1.指定跳转:

$route['abc'] = 'test';

当输入abc时指定跳转到test控制器;
2.复杂跳转:

$route['abc/(:any)']['put'] = 'test/index/$1';

1.:any表示后面必须接入任何东西;

2.[‘put’]表示只有put请求才会跳转;

3.’test/index/$1 表示跳转到test 控制器执行index动作,传入参数$1(即输入的:any);

3.匹配正则跳转:

$route['abc/[a-z]+/(\d+)'] = 'test/index/$1/$2';

1.后面第一个必须至少是一个以上的字母,第二个必须是至少有一个以上的数字;

2.$1和$2可以同时传过去;

4.回调函数跳转:
$route['abc/(\d+)'] = function($id){
    return 'test/index/$id';
}
           

二.CI的数据库操作

1.基本query操作
$this->load->database();
//载入数据库
$res = $this->load->query($sql);
//执行sql语句,返回一个对象
$list = $res->result();
//获取结果集,对象,如果要取得数组,则用result_array();
           
2.AR操作

注:3.0之后,active record已经被改写成query_builder

首先在config/database.php里面设置

$query_builder=TRUE

,默认是false

1.增

$this->db->insert('table_name' , $insert_data)

$insert_data是数组

2.删

$this->db->delete('table_name' , $where);

$where是数组

3.改

$this->db->update('$table_name' , $update_data , $where)

4.查

$this->db->get('$table_name')

3.连贯操作
$res = $this->db->select('id,name')
                ->from('user')
                ->where('id >=' , )
                ->limit(,)
                ->order_by('id')
                ->get()
                ->result();
           

1.select里面是取出的字段;

2.limit()里面的两个数字和数据库的Limit是相反的,limit(3,2)代表跨过前两条,取得三条数据

三.分页

$this->load->library('pagination');
//载入分页类库
$config['per_page'] = ;
//每页显示数量
$config['total_rows'] = ;
//总共的数量
$config['first_link'] = '首页';
$config['last_link'] = '尾页';
//首尾页显示形式
$config['prev_link'] = '上一页';
$config['next_link'] = '下一页';
//上下页页显示形式
$config['base_url'] = site_url('test/page');
//url基本路径
$this->pagination->initialize($config);
//初始化
$page_list = $this->pagination->create_link();
//得到分页信息
$this->load->view('page' , ['page_list'=>$page_list]);
           

四.文件上传

$config['max_size'] = ;
//设置上传文件的大小
$config['upload_path'] = base_url() . 'uploads';
//设置上传的目录
$config['file_name'] = uniqid();
//设置上传的名称是唯一的
$config['allowed_types'] = 'jpg|jpeg|png|gif';
//设置允许的类型
$this->load->library('upload' , $config );
//载入upload类库
if($this->upload->do_upload('pic')){
    //上传成功
    var_dump($this->upload->data());
}else{
    var_dump($this->upload->display_errors());
}
           

五.session

注:1.开启session类库时,首先要对session存放的位置进行设置,在application/config/config下:

$config['sess_save_path'] = FCPATH . 'public/sess_save_path';

2.设置加密key,z在application/config/config下:

$config['encryption_key'] = 'djskdjsk';

$this->load->library('session');
//载入session类库
$this->session->set_userdata('user' , $user);
//设置session
$this->session->set_flashdata('hello' , 'world');
//设置只生效一次的session
$this->session->userdata('user');
//获取
$this->session->unset_userdata('user');
//删除
           

六.表单验证

$this->load->library('form_validation');
//载入
$this->form_validation->set_rules('user' , 'user' , 'required|min_length[5]|is_uniqued['user.user']',[
    'required' => '必须唯一',
    'min_length' => '长度不够',
    'is_unquied' => '已经被注册'
]);
//设置相应的规则
$res = $this->form_validation->run();
if($res){
    //验证通过
}else{
    //验证失败
    $this->load->view('abc/test');
}
//其实此时可以用作其他框架里面的是否有post来用一个动作完成不同的逻辑

//模板层:
echo validation_errors();//输出所有错误信息
echo set_value('name');//获取上一次输入的信息
echo form_error('name');//获取当前文本的错误信息
           

七.验证码

$this->load->helper('captcha');
$config = [
    'word' => 'hello',
    'img_path' => './captcha/',
    //存储验证码图片的本地位置
    'img_url' => base_url() . 'captcha/',
    //验证码url的路径
];
$cap = create_captcha($config);