部门管理功能的实现
2022-11-27 21:09:48
178
{{single.collect_count}}

php入门到就业线上直播课:进入学习
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API调试工具:点击使用

【一】部门列表展示

分析:

①控制器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部门管理功能的全部内容。

相关参考:thinkphp教程

以上就是部门管理功能的实现的详细内容,更多请关注php中文网其它相关文章!

回帖
全部回帖({{commentCount}})
{{item.user.nickname}} {{item.user.group_title}} {{item.friend_time}}
{{item.content}}
{{item.comment_content_show ? '取消' : '回复'}} 删除
回帖
{{reply.user.nickname}} {{reply.user.group_title}} {{reply.friend_time}}
{{reply.content}}
{{reply.comment_content_show ? '取消' : '回复'}} 删除
回帖
收起
没有更多啦~
{{commentLoading ? '加载中...' : '查看更多评论'}}