【一】部門列表展示
分析:
①控制器DeptController.class.php ②方法showList(不要使用list方法,因為list是關鍵詞) ③模板文件:showList.html
下面按步驟編寫
? ? ? ①創建方法showList來展示模板
class?DeptController?extends?Controller{ ????????public?function?showList(){ ????????????$this->display(); ????????} }
? ? ? ②將模板文件showList.html復制到View/Dept下(因為控制器為Dept,方法為showList,所以要一一對應)
? ? ? ③修改靜態資源路徑
? ? ? ④修該showList方法,獲取部門數據。并傳遞到模板
public?function?showList(){ ????????????$model?=?M('dept');//模型實例化 ????????????$data?=?$model->order('sort?asc')->select();//條件查詢,升序排列 ????????????$this->assign('data',$data);//變量分配傳遞到模板 ????????????$this->display(); ????????}
? ? ?⑤模板遍歷讀取數據
id | 部門 | 所屬部門 | 排序 | 備注 | 編輯數據 | 刪除數據 |
{$vol.id} | {$vol.name} | ???????????????? |
{$vol.sort} | {$vol.remark} | 刪除 |
注意:1. 模板的if判斷,必須加空格
? ? ? ? ? ?2.
?
【二】部門編輯
分析:
控制器:DeptController.class.php
方法:edit(展示模板】處理提交)
模板:edit.html
下面按步驟編寫代碼
(1)編寫edit方法,實現模板展示
public?function?edit(){ //展示模板 ?$this->display(); }
(2)修改編輯按鈕,跳頁時帶上id
<td><a>編輯</a></td>
(3)復制模板文件edit.html到指定位置,Admin/View/Dept/edit.html;修改靜態資源路徑
(4)修改edit方法,展示原來數據
id:<input><br>部門:<input><br>所屬部門:<select> ????<option>頂級部門</option> ????<volist> ????????<option>{$vol.name}</option> ????</volist></select><br>排序:<input><br>備注:<input><br>
(5)處理表單提交頁面
隱藏域:因為系統限制不能執行批量修改,所以修改時必須指定主鍵。所以必須添加一個隱藏域,來傳遞id
jquery提交:
<script> $(document).ready(function(){ $('button').on('click',function(){ $('form').submit();//提交表單 }) })</script>
(6)數據的保存,修改edit方法后的代碼
public?function?edit(){//展示模板或者post請求????????????if?(IS_POST){????????????????$post?=?I('post.');????????????????//?dump($post);die;????????????????$model?=?M('dept');????????????????//保存操作????????????????$result?=?$model->save($post);????????????????if?($result?!==?false)?{????????????????????$this->success('修改成功',U('showList'),3);????????????????}else{????????????????????$this->error('修改失敗');????????????????}????????????}else{????????????????//接收id????????????????$id=I('get.id');????????????????//實例化模型????????????????$model?=?M('dept');????????????????//查詢指定記錄????????????????$data?=?$model->find($id);????????????????//?查詢全部的部門信息(不包含當前級),同于下拉。因為包含自己所在級別會在遞歸時陷入死循環?????????????????$info?=?$model->where('id?!=?'.$id)->select();????????????????//變量分配????????????????$this->assign('data',$data);????????????????$this->assign('info',$info);????????????????//展示模板????????????????$this->display();????????????}????????}
【三】部門刪除
分析
控制器:DeptController.class.php
方法:del
模板:刪除不需要模板文件,因為刪除就是個處理數據過程。和登出一樣
說明:有單個刪除,也有批量刪除。而編輯只能單個編輯,不能批量編輯。
(1)修改模板,添加復選框
id | 部門 | 所屬部門 | 排序 | 備注 | 編輯數據 | 刪除 |
{$vol.id} | {$vol.name} | ???????????????? |
{$vol.sort} | {$vol.remark} |
(2)點擊刪除按鈕,實現刪除
? ? ? ?①點擊刪除,獲取復選框的值(jquery實現)。之后到php刪除方法
<script> $(document).ready(function(){ $('.del').on('click',function(){ var id = ''; $.each($('input:checkbox:checked'),function(){ id += $(this).val()+','; }); // 去掉最后的,通過截取字符串獲取 id = id.substring(0,id.length-1); //帶著參數跳轉到del方法 window.location.href = '__CONTROLLER__/del/id/'+id;//刪除方法和展示方法的控制器是同級,所以用模板常量__CONTROLLER__ }) })</script>
? ? ? ②編寫del方法,實現刪除
? ? ? ?//真刪除—批量和單個刪除
? ? ?
?public?function?del(){ ????????????//接收參數 ????????????$id??=?I('get.id');????????????//模型實例化 ????????????$model?=?M('dept');????????????//刪除 ????????????$result?=?$model->delete($id);????????????//判斷結果,刪除成功或失敗都會跳轉到列表頁,所以不用加入跳轉鏈接 ????????????if?($result)?{????????????????$this->success('刪除成功'); ????????????}else{????????????????$this->error('刪除失敗'); ????????????} ????????}