您好,登錄后才能下訂單哦!
小編給大家分享一下ThinkPHP如何實現部門管理功能,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
【一】部門列表展示
分析:
①控制器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(); }
⑤模板遍歷讀取數據
<table border="1" cellspacing="0"> <tr> <td>id</td><td>部門</td><td>所屬部門</td><td>排序</td><td>備注</td><td>編輯數據</td><td>刪除數據</td> </tr> <volist name='data' id='vol'> <tr> <td class="num">{$vol.id}</td> <td class="name">{$vol.name}</td> <td class="procress"> <if condition="$vol.pid == 0"> 頂級部門 <else/> 二級部門 </if> </td> <td class="node">{$vol.sort}</td> <td class="time">{$vol.remark}</td> <td><a href="javascript:;">編輯</a></td> <td><a href="javascript:;">刪除</a></td> </tr> </volist></table>
注意:1. 模板的if判斷,必須加空格
<if condition="$vol.pid == 0">頂級部門</if>
2.<else />加/
【二】部門編輯
分析:
控制器:DeptController.class.php
方法:edit(展示模板】處理提交)
模板:edit.html
下面按步驟編寫代碼
(1)編寫edit方法,實現模板展示
public function edit(){ //展示模板 $this->display(); }
(2)修改編輯按鈕,跳頁時帶上id
<td><a href="__CONTROLLER__/edit/id/{$vol.id}">編輯</a></td>
(3)復制模板文件edit.html到指定位置,Admin/View/Dept/edit.html
;修改靜態資源路徑
(4)修改edit方法,展示原來數據
id:<input type="text" name="id" readonly="readonly" value="{$data.id}"><br/>部門:<input type="text" name="name" value="{$data.name}"><br/>所屬部門:<select> <option value="0">頂級部門</option> <volist name="info" id="vol"> <option value="{$vol.id}">{$vol.name}</option> </volist></select><br/>排序:<input type="text" name="sort" value="{$data.sort}"><br/>備注:<input type="text" name="id" value="{$data.remark}"><br/>
(5)處理表單提交頁面
隱藏域:因為系統限制不能執行批量修改,所以修改時必須指定主鍵。所以必須添加一個隱藏域,來傳遞id
<form action="" method="post"> id:<input type="hidden" name="id" value="{$data.id}"><br/> <!-- 或者$Think.get.id --> 部門:<input type="text" name="name" value="{$data.name}"><br/> 所屬部門: <select name="pid"> <option value="0">頂級部門</option> <volist name="info" id="vol"> <option value="{$vol.id}">{$vol.name}</option> </volist> </select><br/> 排序:<input type="text" name="sort" value="{$data.sort}"><br/> 備注:<input type="text" name="remark" value="{$data.remark}"><br/> <button>提交</button></form>
jquery提交:
<script type="text/javascript"> $(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)修改模板,添加復選框
<table border="1" cellspacing="0"> <tr> </td>><td>id</td><td>部門</td> <td>所屬部門</td><td>排序</td><td>備注</td><td>編輯數據</td><td><a href="javascript:;" class="del">刪除</a</td> </tr> <volist name='data' id='vol'> <tr> <td class="num">{$vol.id}</td> <td class="name">{$vol.name}</td> <td class="procress"> <if condition="$vol.pid == 0"> 頂級部門 <else/> 二級部門 </if> </td> <td class="node">{$vol.sort}</td> <td class="time">{$vol.remark}</td> <td><a href="__CONTROLLER__/edit/id/{$vol.id}">編輯</a></td> <td><input type="checkbox" class="deptid" value="{$vol.id}"></td> </tr> </volist> </table>
(2)點擊刪除按鈕,實現刪除
①點擊刪除,獲取復選框的值(jquery實現)。之后到php刪除方法
<script type="text/javascript"> $(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('刪除失敗'); } }
看完了這篇文章,相信你對“ThinkPHP如何實現部門管理功能”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。