一、控制器
1.文件名全小寫且不用像tp一樣加后綴(例:user.php)
2.所有控制器直接或間接繼承CI_Controller類
3.類內方法基本上都是加public修飾
4.方法名以下劃線 _ 開頭的方法,只能在內部調用不能直接訪問
二、視圖
1.所有視圖放在views文件夾內,最好在文件夾里多建幾個文件夾,按模塊區(qū)分
使用$this->load->view(‘folder/file’);加載視圖
視圖中不使用模板引擎,直接使用原生PHP輸出變量
//分配數組或變量
$this->load->vars(數組/變量);
//循環(huán)變量
<?php foreach($var as $k=>$v):?>
<?=$v[‘id’]?>
<?=$v[‘name’]?>
<?php endforeach;?>
//條件判斷
<?php if(condition):?>
Code
<?php endif;?>
2.接收GET方法傳遞的參數$this->uri->segment(位置)
(例:www.douyu.com/index.php/live/index/id/1)
獲取這個id值就是$this->uri->segment(4);//位置是從入口文件后開始數
當然,也可以不寫id,(例:www.douyu.com/index.php/live/index/1)
代碼為$this->uri->segment(3);
3.接收POST方法傳遞的參數$this->input->post(‘input標簽中的name值’);
<input name=’example’>示例</input>
獲取以上標簽的value值就是$this->input->post(‘example’);
4.返回ajax請求
$data={OBJECT};
$this->output->set_header('Content-Type: application/json; charset=utf-8');
echo json_encode($data);
以上兩行代碼相當于tp中的$this->ajaxReturn($data);
三、模型
1.準備工作
在application/config/autoload.php代碼中找到$autoload['libraries']將值改為array('database');
數據庫配置文件在application/config/database.php中作相應的配置
2.CRUD操作
$res=$this->db->get(‘user’);//實例化user表,返回一個對象
$res->result_array();//以數組形式返回user表中的所有數據
$res->row_array();//以數組形式返回user表中的一條數據
$this->db->insert(‘user’,array());//向user表中插入一條數組中的數據
$this->db->insert_id();//返回最近一條插入記錄的id
$this->db->affected_rows();//返回數據庫操作受影響行數(適用以下的更新和刪除操作)
$this->db->update(‘user’,array(),array(‘id’=>3));//將user表中id為3的記錄更新為數組中對應的值
$this->db->delete(‘user’,array(‘id’=>1));//刪除user表中id為1的記錄
3.連貫操作
如果一條SQL語句為’select name from user where id>=10 limit 2,3 order by id asc’;
那么CI的連貫操作就應該為
$this->db->select(‘name’)
->from(‘user’)
->where(‘id /*中間必須有一個空格,沒有就會報錯)*/ >=’,10)
->limit(3,2) //從哪里開始取,取多少條位置和SQL語句的位置是相反的
->order_by(‘id asc’)
->get()
->result_array();
4.連貫操作中where()的補充
where(‘name’,’sam’) //相當于where `name`=’sam’
where(‘id (空格) !=’,1) //相當于where `id`!=1
where(array(‘name’=>’sam’,’id /*一個空格*/ <’=>2)) //相當于where `name`=’sam’ and id<2
5.如果業(yè)務太復雜使用連貫操作不能滿足,希望使用原生SQL語句則可以使用以下代碼
$this->db->query(SQL語句);
6.查詢最近的一條SQL語句使用以下代碼
$this->db->last_query();
7.最好所有的數據庫操作寫在模型中,以便項目維護
8.模型文件名需要全部小寫,例:user_model.php
9.對應的模型類則應該是 class User_model (注意大小寫)
10.模型類需要直接繼承CI_Model類 (注意大小寫)
11.在控制器中加載模型
$this->load->model(‘User_model’,’user’);//加載User_model模型,并取別名為user
$this->user->add();//調用user模型中的add方法
剩下一點點的補充:
1.Form表單提交里action的地址應該怎么處理
在application/config/autoload.php代碼中找到$autoload['helper']將值改為array('url');
action=’<?php echo site_url(‘控制器/方法名’);?>’
2.訪問與入口文件同級folder文件夾中的file文件
路徑應該是’<?php echo base_url();?>folder/file’
使用wafer2中CI3框架的一些注意事項:
wx.request中data的值需要是對象,使用的是GET方法傳遞
不管是控制器還是模型,文件名和類名必須完全一致,且首字母必須大寫