部門管理功能的實現

部門管理功能的實現

【一】部門列表展示

分析:

①控制器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(); ????????}

? ? ?⑤模板遍歷讀取數據


????

????????

????

???? ????????

????????????

????????????

????????????

????????????

????????????

????????????<td><a>編輯</a></td> ????????????

????????

????

id 部門 所屬部門 排序 備注 編輯數據 刪除數據
{$vol.id} {$vol.name} ???????????????? ????????????????????頂級部門???????????????? ????????????????????二級部門???????????????? ???????????? {$vol.sort} {$vol.remark} 刪除

注意:1. 模板的if判斷,必須加空格

頂級部門

? ? ? ? ? ?2.加/

?

【二】部門編輯

分析:

控制器:DeptController.class.php

方法:edit(展示模板】處理提交)

模板:edit.html

下面按步驟編寫代碼

(1)編寫edit方法,實現模板展示

public?function?edit(){ //展示模板 ?$this-&gt;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


????id:
???? ????部門:
????所屬部門:????
????排序:
????備注:
????

jquery提交:

<script>     $(document).ready(function(){         $(&#39;button&#39;).on(&#39;click&#39;,function(){             $(&#39;form&#39;).submit();//提交表單        })     })</script>

(6)數據的保存,修改edit方法后的代碼

public?function?edit(){//展示模板或者post請求????????????if?(IS_POST){????????????????$post?=?I('post.');????????????????//?dump($post);die;????????????????$model?=?M('dept');????????????????//保存操作????????????????$result?=?$model-&gt;save($post);????????????????if?($result?!==?false)?{????????????????????$this-&gt;success('修改成功',U('showList'),3);????????????????}else{????????????????????$this-&gt;error('修改失敗');????????????????}????????????}else{????????????????//接收id????????????????$id=I('get.id');????????????????//實例化模型????????????????$model?=?M('dept');????????????????//查詢指定記錄????????????????$data?=?$model-&gt;find($id);????????????????//?查詢全部的部門信息(不包含當前級),同于下拉。因為包含自己所在級別會在遞歸時陷入死循環?????????????????$info?=?$model-&gt;where('id?!=?'.$id)-&gt;select();????????????????//變量分配????????????????$this-&gt;assign('data',$data);????????????????$this-&gt;assign('info',$info);????????????????//展示模板????????????????$this-&gt;display();????????????}????????}

【三】部門刪除

分析

控制器:DeptController.class.php

方法:del

模板:刪除不需要模板文件,因為刪除就是個處理數據過程。和登出一樣

說明:有單個刪除,也有批量刪除。而編輯只能單個編輯,不能批量編輯。

(1)修改模板,添加復選框


????

????????>

????????

????

???? ????????

????????????

????????????

????????????

????????????

????????????

????????????<td><a>編輯</a></td> ????????????

????????

????

id 部門 所屬部門 排序 備注 編輯數據 刪除
{$vol.id} {$vol.name} ???????????????? ????????????????????頂級部門 ???????????????? ????????????????????二級部門 ???????????????? ???????????? {$vol.sort} {$vol.remark}

(2)點擊刪除按鈕,實現刪除

? ? ? ?①點擊刪除,獲取復選框的值(jquery實現)。之后到php刪除方法

<script>     $(document).ready(function(){         $(&#39;.del&#39;).on(&#39;click&#39;,function(){             var id = &#39;&#39;;             $.each($(&#39;input:checkbox:checked&#39;),function(){                 id += $(this).val()+&#39;,&#39;;             });            // 去掉最后的,通過截取字符串獲取             id = id.substring(0,id.length-1);            //帶著參數跳轉到del方法             window.location.href = &#39;__CONTROLLER__/del/id/&#39;+id;//刪除方法和展示方法的控制器是同級,所以用模板常量__CONTROLLER__        })     })</script>

? ? ? ②編寫del方法,實現刪除

? ? ? ?//真刪除—批量和單個刪除
? ? ?

?public?function?del(){ ????????????//接收參數 ????????????$id??=?I('get.id');????????????//模型實例化 ????????????$model?=?M('dept');????????????//刪除 ????????????$result?=?$model-&gt;delete($id);????????????//判斷結果,刪除成功或失敗都會跳轉到列表頁,所以不用加入跳轉鏈接 ????????????if?($result)?{????????????????$this-&gt;success('刪除成功'); ????????????}else{????????????????$this-&gt;error('刪除失敗'); ????????????} ????????}

? 版權聲明
THE END
喜歡就支持一下吧
點贊6 分享