zoukankan      html  css  js  c++  java
  • ThinkPHP---案例2--部门管理功能

    【一】部门列表展示

    分析:

    ①控制器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)部门删除

  • 相关阅读:
    葡萄城报表介绍:多数据源报表
    葡萄城报表介绍:报表打印
    葡萄城报表介绍:财务报表分析
    葡萄城报表介绍:数据钻取
    用递归法计算斐波那契数列的第n项
    奋进
    //java递归调用输出一个目录下的所有子目录及文件名称 (最新增加)
    分享下通过java 读取目录及子目录下指定文件名的路径 并放到一个List数组里面返回遍历和写到文件里(同时将不会出现覆盖问题和重复读入问题)
    $_SERVER函数获取的内容解释
    mysql数据库忘记密码
  • 原文地址:https://www.cnblogs.com/fightjianxian/p/8683184.html
Copyright © 2011-2022 走看看