部門管理機能の導入

WJ
WJ転載
2020-06-09 17:02:223502ブラウズ

部門管理機能の導入

[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 なので 1 対 1 対応する必要があります)

③静的リソースパスを修正

④部門データを取得する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 判定にはスペースを追加する必要があります

9de3a75ac809bc69eb024caf66b0d7d7最上位部門0e19ae19f9bb3871b7693b46538542ae<br>

2.0e9bcc50c21de139173e7314733caa5cAdd/

【二】部門編集者

分析:

コントローラー: DeptController .class.php

メソッド: edit (テンプレートの表示]送信の処理)

テンプレート: edit.html

コードをステップバイステップで記述します

(1) テンプレート表示を実現する編集メソッドを書く

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) 元のデータが表示されるように編集メソッドを変更

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) データの保存、編集メソッドの編集後のコードの変更

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();            }        }

[3] 部門の削除

分析

コントローラー:DeptController.class.php

メソッド: del

テンプレート: 削除削除はデータ処理プロセスであるため、ファイルのテンプレートは必要ありません。ログアウトと同じです。

注: 単一削除と一括削除があります。編集は個別にのみ実行でき、バッチでは実行できません。

(1) テンプレートを変更し、チェック ボックスを追加します。

>
        
            <td><a href="__CONTROLLER__/edit/id/{$vol.id}">编辑</a></td>
            
id部门 所属部门排序备注编辑数据删除
{$vol.id} {$vol.name} 顶级部门 二级部门 {$vol.sort} {$vol.remark}

(2) 削除ボタンをクリックして削除を実行します。

① [削除] をクリックして、チェック ボックスの値を取得します。 (jQuery達成)。次に、php の削除メソッドに移動します。

<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>

②削除を実現する del メソッドを記述します。

//本当の削除---バッチおよび単一の削除

 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;);
            }
        }

上記ThinkPHP 部門のすべての管理機能です。

関連参照:thinkphp チュートリアル

以上が部門管理機能の導入の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51dev.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。