【一】部门列表展示

分析:

①控制器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('删除失败');
}
}

(2)部门编辑

(3)部门删除

ThinkPHP---案例2--部门管理功能的更多相关文章

  1. [.NET领域驱动设计实战系列]专题七:DDD实践案例:引入事件驱动与中间件机制来实现后台管理功能

    一.引言 在当前的电子商务平台中,用户下完订单之后,然后店家会在后台看到客户下的订单,然后店家可以对客户的订单进行发货操作.此时客户会在自己的订单状态看到店家已经发货.从上面的业务逻辑可以看出,当用户 ...

  2. DDD实践案例:引入事件驱动与中间件机制来实现后台管理功能

    DDD实践案例:引入事件驱动与中间件机制来实现后台管理功能 一.引言 在当前的电子商务平台中,用户下完订单之后,然后店家会在后台看到客户下的订单,然后店家可以对客户的订单进行发货操作.此时客户会在自己 ...

  3. 【php增删改查实例】第十节 - 部门管理模块(新增功能)

    正常情况下,在一个部门管理页面,不仅仅需要展示列表数据,还需要基本的增删改操作,所以,我们先把之前写好的新增功能集成进来. 在toolbar中,添加一个新增按钮. <div id="t ...

  4. 学生与部门管理app-产品功能与界面的简单设计

    学生与部门管理app-产品功能与界面的简单设计 1. 结对成员学号 我:********* 大佬:*******10 2. 需求分析(NABCD模型) 2.1 N-需求 各个部门在开学初占据学校青春广 ...

  5. C#开发微信门户及应用(25)-微信企业号的客户端管理功能

    我们知道,微信公众号和企业号都提供了一个官方的Web后台,方便我们对微信账号的配置,以及相关数据的管理功能,对于微信企业号来说,有通讯录中的组织架构管理.标签管理.人员管理.以及消息的发送等功能,其中 ...

  6. C#开发微信门户及应用(37)--微信公众号标签管理功能

    微信公众号,仿照企业号的思路,增加了标签管理的功能,对关注的粉丝可以设置标签管理,实现更加方便的分组管理功能.开发者可以使用用户标签管理的相关接口,实现对公众号的标签进行创建.查询.修改.删除等操作, ...

  7. C#开发微信门户及应用(17)-微信企业号的通讯录管理开发之部门管理

    前面一篇随笔企业号的一些基础信息,以及介绍如何配置企业号的回调方式实现和企业号服务器进行沟通的桥梁.本篇主要还是继续介绍企业号的开发工作的开展,介绍微信企业号通讯录管理开发功能,介绍其中组织机构里面如 ...

  8. 我的第一个python web开发框架(38)——管理员管理功能

    后台管理员的管理功能,它主要用来管理后台的登录账号,绑定权限,当然如果想将后台管理扩展成企业相关管理系统,比如用于公司人事管理,在这个基础上进行适当扩展就可以了. 我们先看看界面效果(也可以看着数据字 ...

  9. 我的第一个python web开发框架(36)——后台菜单管理功能

    对于后台管理系统来说,要做好权限管理离不开菜单项和页面按钮控件功能的管理.由于程序没法智能的知道有什么菜单和控件,哪些人拥有哪些操作权限,所以首先要做的是菜单管理功能,将需要管理的菜单项和各个功能项添 ...

  10. XMatch: 您的部门管理助手

    本博客为XMatch项目宣传博客. XMatch: 您的部门管理助手 目录 一.产品概述 二.产品功能 三.产品的创新特色 四.推广方案 五.宣传图 一.产品概述 当前社团的各方面管理工作主要都由手工 ...

随机推荐

  1. [办公应用]word 2007:全屏快捷键,让复制图片保持原样大小(office 全屏快捷键)

    最近同事咨询这两个问题: 1.word 2007内是否有全屏显示的快捷键,这样投影时,就可以快速切换到全屏. 2.从ppt或者excel复制一张较大的图片,word 2007 会默认让复制的图片缩小, ...

  2. 2016/1/14 java随机数生成

    1.Math库里的static(静态)方法random() 该方法的作用是产生0到1之间(包括0,但不包括1)的一个double值. double rand = Math.random(); 2.通过 ...

  3. overwrite 复制

    [root@myv xiaole_dl_img]# cp upfc/mainDEBUGmysqllogTEST.py online_package_test_/tmp/ cp: overwrite ‘ ...

  4. commons.fileupload 文件上传

    编辑jsp页面获取文件 <html> <head> <base href="<%=basePath%>"> <title> ...

  5. windows7 RDP修改

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TerminalServer\WinStations\RDP Tcp\PortNumber”.

  6. js DOM操作练习

    1.有如下html,如果用js获得被选中的option的text描述(非value)<select id="select_id">    <option vlue ...

  7. bzoj 1854: [Scoi2010]游戏【匈牙利算法】

    没啥可说的,就是一边属性一边道具建二分图,把两个属性都连到道具上,然后枚举匹配,如果无法匹配就输出,时间戳优化 #include<iostream> #include<cstdio& ...

  8. JS 实现PDF文件打印

    function PdfPrint() {        bdhtml = window.document.body.innerHTML;        sprnstr = "<!-- ...

  9. 二分+RMQ/双端队列/尺取法 HDOJ 5289 Assignment

    题目传送门 /* 题意:问有几个区间最大值-最小值 < k 解法1:枚举左端点,二分右端点,用RMQ(或树状数组)求区间最值,O(nlog(n))复杂度 解法2:用单调队列维护最值,O(n)复杂 ...

  10. AppConfig 操作简易封装

    using System; using System.Configuration; namespace HT.IMS.Common { public class ClientConfig { ; pu ...