> PHP 프레임워크 > ThinkPHP > 부서관리 기능 구현

부서관리 기능 구현

WJ
풀어 주다: 2020-06-10 09:39:20
앞으로
3505명이 탐색했습니다.

부서관리 기능 구현

[1] 부서 목록 표시

분석:

①控制器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=&#39;data&#39; id=&#39;vol&#39;>
        <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 판단에 공백을 추가해야 합니다注意:1. 模板的if判断,必须加空格

<if condition="$vol.pid == 0">顶级部门</if><br/>

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(){
        $(&#39;button&#39;).on(&#39;click&#39;,function(){
            $(&#39;form&#39;).submit();//提交表单        })
    })</script>
로그인 후 복사

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

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

【三】部门删除

分析

控制器:DeptController.class.php

<if 조건=" $vol.pid == 0">상위 부서</if><p>

          2.<else />추가/

【이】Department Editor

Analytic:

Controller: DeptController.class.php

Method: 편집(표시 템플릿] 제출 처리 중)

Template: edit.html

코드 작성 다음 단계에서

(1) 템플릿 표시를 구현하는 편집 방법을 작성합니다

>
        
            <td><a href="__CONTROLLER__/edit/id/{$vol.id}">编辑</a></td>
            
id部门 所属部门排序备注编辑数据删除
{$vol.id} {$vol.name} 顶级部门 二级部门 {$vol.sort} {$vol.remark}
로그인 후 복사
(2) 편집 버튼을 수정하고 페이지로 이동할 때 ID를 가져옵니다
<script type="text/javascript">
    $(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>
로그인 후 복사
(3) 템플릿 파일 edit.html을 다음으로 복사합니다. 지정된 위치, Admin/View /Dept/edit.html; 정적 리소스 경로 수정

(4) 편집 방법 수정 및 원본 데이터 표시🎜
 public function del(){
            //接收参数
            $id  = I(&#39;get.id&#39;);            //模型实例化
            $model = M(&#39;dept&#39;);            //删除
            $result = $model->delete($id);            //判断结果,删除成功或失败都会跳转到列表页,所以不用加入跳转链接
            if ($result) {                $this->success(&#39;删除成功&#39;);
            }else{                $this->error(&#39;删除失败&#39;);
            }
        }
로그인 후 복사
🎜(5) 양식 제출 처리 page🎜🎜숨겨진 필드: 시스템 제한으로 인해 일괄 수정이 불가능하므로 수정 시 기본 키를 지정해야 합니다. 따라서 id🎜rrreee🎜jquery 제출을 전달하려면 숨겨진 필드를 추가해야 합니다:🎜rrreee🎜(6) 데이터 저장, 편집 방법 이후 코드 수정🎜rrreee🎜[3] 부서 삭제🎜🎜Analytic🎜🎜Controller: DeptController.class.php🎜🎜Method: del🎜🎜Template: 삭제는 데이터 처리 프로세스이므로 삭제에는 템플릿 파일이 필요하지 않습니다. 로그아웃과 동일🎜🎜주의사항: 개별삭제와 일괄삭제가 있습니다. 편집은 개별적으로만 가능하며 일괄적으로는 불가능합니다. 🎜🎜 (1) 템플릿 수정 및 체크박스 추가 🎜rrreee🎜 (2) 삭제 버튼 클릭 시 삭제 완료 🎜🎜 ①삭제 클릭 시 체크박스 값 가져오기(jquery 구현). 그런 다음 PHP 삭제 방법으로 이동 🎜rrreee🎜 ② 삭제를 수행하는 del 방법 작성 🎜🎜                                                           사용 using using               ‐ out off 님의 ' s ‐ ‐‐ ‐‐‐‐‐‐                                                                     삭제 예정 🎜 🎜🎜관련 참조: 🎜🎜thinkphp 튜토리얼🎜🎜🎜

위 내용은 부서관리 기능 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:51dev.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿