【一】部门列表展示

分析:

①控制器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. android几个高速打包命令

    在MTK  android4.4 上,有几条命令能够高速打包system uaserdata bootimage,可提高效率. snod:这个命令是能够高速打包system.是不会运行android各 ...

  2. 8148和8127中的ezsdk和dvrsdk

    http://www.dajudeng.com/d2012081009b8a9d5de87101f69f31952c.html

  3. manacher hihoCoder1032 最长回文子串

    居然能够做到O(n)的复杂度求最长回文.,也是给跪了. 以下这个人把manacher讲的很好,,能够看看 http://blog.csdn.net/xingyeyongheng/article/det ...

  4. 【Noip模拟By yxj】

    1.randomDescription 给定4个参数A0,N,c,p,你需要按下式构造A1~AN: A[i]=(A[i-1]2+c)mod p 之后,你需要求出A1~AN中,第K大的数值.Input ...

  5. python3 使用http.server模块 搭建一个简易的http服务器

    from http.server import HTTPServer, BaseHTTPRequestHandler import json data = {'result': 'this is a ...

  6. 将代码设置的剪切板内容通过输入法软件粘贴入app搜索框

    #进入app搜索框位置--双击#等待输入法软件弹出#将代码设置的剪切板内容通过输入法软件粘贴入app搜索框#搜索 import win32apiimport timeimport win32clipb ...

  7. LightTable的结构(一)

    LightTable使用clojurescript来生成js,然后使用 node-webkit 来处理UI clojurescript非常适合做抽象程度很高的页面和编辑逻辑结构设计, 最近会对整体进行 ...

  8. [LeetCode] LRU Cache [Forward]

    Design and implement a data structure for Least Recently Used (LRU) cache. It should support the fol ...

  9. c# 生成 xml 文件

    方法一: using System; using System.Xml; using System.IO; using System.Text; public class ReadWriteXml { ...

  10. 如何给mysql用户分配权限+增、删、改、查mysql用户

    在mysql中用户权限是一个很重析 参数,因为台mysql服务器中会有大量的用户,每个用户的权限需要不一样的,下面我来介绍如何给mysql用户分配权限吧,有需要了解的朋友可参考. 1,Mysql下创建 ...