天天看點

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