一.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裡面設定
,預設是false
$query_builder=TRUE
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下:2.設定加密key,z在application/config/config下:
$config['sess_save_path'] = FCPATH . 'public/sess_save_path';
$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);