百搜论坛欢迎您的加入!
adimg adimg
 
昨日:篇  今日:篇   总帖:篇   会员:
博主最大Lv63   
部门管理功能的实现     

【一】部门列表展示

分析:

1

2

3

①控制器DeptController.class.php

②方法showList(不要使用list方法,因为list是关键词)

③模板文件:showList.html

下面按步骤编写

①创建方法showList来展示模板

1

2

3

4

5

class DeptController extends Controller{

        public function showList(){

            $this->display();

        }

}

②将模板文件showList.html复制到View/Dept下(因为控制器为Dept,方法为showList,所以要一一对应)

③修改静态资源路径

④修该showList方法,获取部门数据。并传递到模板

1

2

3

4

5

6

public function showList(){

            $model = M('dept');//模型实例化

            $data = $model->order('sort asc')->select();//条件查询,升序排列

            $this->assign('data',$data);//变量分配传递到模板

            $this->display();

        }

⑤模板遍历读取数据

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<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方法,实现模板展示

1

2

3

4

public function edit(){

//展示模板

 $this->display();

}

(2)修改编辑按钮,跳页时带上id

1

<td><a href="__CONTROLLER__/edit/id/{$vol.id}">编辑</a></td>

(3)复制模板文件edit.html到指定位置,Admin/View/Dept/edit.html;修改静态资源路径

(4)修改edit方法,展示原来数据

1

2

3

4

5

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

1

2

3

4

5

6

7

8

9

10

11

12

13

<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提交:

1

2

3

4

5

<script type="text/javascript">

    $(document).ready(function(){

        $('button').on('click',function(){

            $('form').submit();//提交表单        })

    })</script>

(6)数据的保存,修改edit方法后的代码

1

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)修改模板,添加复选框

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

<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删除方法

1

2

3

4

5

6

7

8

9

10

<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方法,实现删除

//真删除---批量和单个删除

1

2

3

4

5

6

7

8

9

public function del(){

           //接收参数

           $id  = I('get.id');            //模型实例化

           $model = M('dept');            //删除

           $result = $model->delete($id);            //判断结果,删除成功或失败都会跳转到列表页,所以不用加入跳转链接

           if ($result) {                $this->success('删除成功');

           }else{                $this->error('删除失败');

           }

       }

以上就是ThinkPHP部门管理功能的全部内容。

相关参考:thinkphp教程

以上就是部门管理功能的实现的详细内容

 0  已被阅读了1134次  楼主 2020-06-23 09:16:36
回复列表

回复:部门管理功能的实现

联系站长 友链申请桂ICP备19000949号-1     桂ICP备19000949号-1
您的IP:3.144.124.232,2024-05-02 14:24:19,Processed in 0.04413 second(s).
免责声明: 本网不承担任何由内容提供商提供的信息所引起的争议和法律责任。
Powered by HadSky 7.12.9
已有0次打赏
(0) 分享
分享
取消
免责声明
1、本站资源,均来自网络,版权归原作者,所有资源和文章仅限用于学习和研究目的 。
2、不得用于商业或非法用途,否则,一切责任由该用户承担 !
如果觉得本文还不错请点个赞或者打赏点轻币哦~
拒绝伸手党,拿走请回复,尊重楼主,尊重你我他~

侵权删除请致信 E-Mail:207882320@qq.com