[1] Department list display
Analysis:
①控制器DeptController.class.php ②方法showList(不要使用list方法,因为list是关键词) ③模板文件:showList.html
Follow the steps to write
①Create the method showList to display the template
class DeptController extends Controller{ public function showList(){ $this->display(); } }
②Copy the template file showList.html to View/Dept (because the controller is Dept and the method is showList, so there must be a one-to-one correspondence)
③Modify the static resource path
④Revise the showList method to obtain department data. And passed to the template
public function showList(){ $model = M('dept');//模型实例化 $data = $model->order('sort asc')->select();//条件查询,升序排列 $this->assign('data',$data);//变量分配传递到模板 $this->display(); }
⑤ Template traverses to read data
<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>
Note: 1. Spaces must be added to the if judgment of the template
<if condition="$vol.pid == 0">Top-level department</if><br/>
2.<else />Add/
【二】Department Editor
Analysis:
Controller: DeptController.class.php
Method: edit (display template】process submission)
Template: edit.html
Write the code step by step
(1) Write the edit method to realize template display
public function edit(){ //展示模板 $this->display(); }
(2) Modify the edit button and bring the id when jumping to the page
<td><a href="__CONTROLLER__/edit/id/{$vol.id}">编辑</a></td>
(3) Copy the template file edit.html to the specified location, Admin/View/Dept/edit.html
; Modify the static resource path
(4) Modify the edit method to display the original data
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) Process the form submission page
Hidden field: Because system restrictions cannot perform batch modification, the primary key must be specified when modifying. Therefore, a hidden field must be added to pass the 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 submission:
<script type="text/javascript"> $(document).ready(function(){ $('button').on('click',function(){ $('form').submit();//提交表单 }) })</script>
(6) Saving of data, modifying the code after editing the edit method
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(); } }
[3] Department Delete
Analysis
Controller:DeptController.class.php
Method: del
Template: Delete no template required File, because deletion is a data processing process. Same as logging out
Note: There are single deletions and batch deletions. Editing can only be done individually, not in batches.
(1) Modify the template and add a check box
id | 部门 | 所属部门 | 排序 | 备注 | 编辑数据 | 删除 |
{$vol.id} | {$vol.name} |
|
{$vol.sort} | {$vol.remark} | <td><a href="__CONTROLLER__/edit/id/{$vol.id}">编辑</a></td>
(2) Click the delete button to achieve deletion
①Click delete to get the value of the check box (jquery accomplish). Then go to the php deletion method
<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>
②Write the del method to achieve deletion
//True deletion---batch and single deletion
public function del(){ //接收参数 $id = I('get.id'); //模型实例化 $model = M('dept'); //删除 $result = $model->delete($id); //判断结果,删除成功或失败都会跳转到列表页,所以不用加入跳转链接 if ($result) { $this->success('删除成功'); }else{ $this->error('删除失败'); } }
The above is the ThinkPHP department All management functions.
Related references:thinkphp tutorial
The above is the detailed content of Implementation of department management functions. For more information, please follow other related articles on the PHP Chinese website!