部门管理功能的实现

部门管理功能的实现

【一】部门列表展示

分析:

①控制器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();         }

     ⑤模板遍历读取数据


    

        

    

             

            

            

            

            

            

            <td><a>编辑</a></td>             

        

    

id 部门 所属部门 排序 备注 编辑数据 删除数据
{$vol.id} {$vol.name}                                      顶级部门                                     二级部门                              {$vol.sort} {$vol.remark} 删除

注意:1. 模板的if判断,必须加空格

顶级部门

           2.加/

 

【二】部门编辑

分析:

控制器:DeptController.class.php

方法:edit(展示模板】处理提交)

模板:edit.html

下面按步骤编写代码

(1)编写edit方法,实现模板展示

public function edit(){ //展示模板  $this-&gt;display(); }

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

<td><a>编辑</a></td>

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

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

id:<input><br>部门:<input><br>所属部门:<select>     <option>顶级部门</option>     <volist>         <option>{$vol.name}</option>     </volist></select><br>排序:<input><br>备注:<input><br>

(5)处理表单提交页面

隐藏域:因为系统限制不能执行批量修改,所以修改时必须指定主键。所以必须添加一个隐藏域,来传递id


    id:
         部门:
    所属部门:    
    排序:
    备注:
    

jquery提交:

<script>     $(document).ready(function(){         $(&#39;button&#39;).on(&#39;click&#39;,function(){             $(&#39;form&#39;).submit();//提交表单        })     })</script>

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

public function edit(){//展示模板或者post请求            if (IS_POST){                $post = I('post.');                // dump($post);die;                $model = M('dept');                //保存操作                $result = $model-&gt;save($post);                if ($result !== false) {                    $this-&gt;success('修改成功',U('showList'),3);                }else{                    $this-&gt;error('修改失败');                }            }else{                //接收id                $id=I('get.id');                //实例化模型                $model = M('dept');                //查询指定记录                $data = $model-&gt;find($id);                // 查询全部的部门信息(不包含当前级),同于下拉。因为包含自己所在级别会在递归时陷入死循环?                $info = $model-&gt;where('id != '.$id)-&gt;select();                //变量分配                $this-&gt;assign('data',$data);                $this-&gt;assign('info',$info);                //展示模板                $this-&gt;display();            }        }

【三】部门删除

分析

控制器:DeptController.class.php

方法:del

模板:删除不需要模板文件,因为删除就是个处理数据过程。和登出一样

说明:有单个删除,也有批量删除。而编辑只能单个编辑,不能批量编辑。

(1)修改模板,添加复选框


    

        >

        

    

             

            

            

            

            

            

            <td><a>编辑</a></td>             

        

    

id 部门 所属部门 排序 备注 编辑数据 删除
{$vol.id} {$vol.name}                                      顶级部门                                      二级部门                               {$vol.sort} {$vol.remark}

(2)点击删除按钮,实现删除

       ①点击删除,获取复选框的值(jquery实现)。之后到php删除方法

<script>     $(document).ready(function(){         $(&#39;.del&#39;).on(&#39;click&#39;,function(){             var id = &#39;&#39;;             $.each($(&#39;input:checkbox:checked&#39;),function(){                 id += $(this).val()+&#39;,&#39;;             });            // 去掉最后的,通过截取字符串获取             id = id.substring(0,id.length-1);            //带着参数跳转到del方法             window.location.href = &#39;__CONTROLLER__/del/id/&#39;+id;//删除方法和展示方法的控制器是同级,所以用模板常量__CONTROLLER__        })     })</script>

      ②编写del方法,实现删除

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

 public function del(){             //接收参数             $id  = I('get.id');            //模型实例化             $model = M('dept');            //删除             $result = $model-&gt;delete($id);            //判断结果,删除成功或失败都会跳转到列表页,所以不用加入跳转链接             if ($result) {                $this-&gt;success('删除成功');             }else{                $this-&gt;error('删除失败');             }         }

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享