ホームページ > 記事 > PHPフレームワーク > 部門管理機能の導入
[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='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 判定にはスペースを追加する必要があります
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(){ $('button').on('click',function(){ $('form').submit();//提交表单 }) })</script>
(6) データの保存、編集メソッドの編集後のコードの変更
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(); } }
[3] 部門の削除
分析
コントローラー:DeptController.class.php
メソッド: del
テンプレート: 削除削除はデータ処理プロセスであるため、ファイルのテンプレートは必要ありません。ログアウトと同じです。
注: 単一削除と一括削除があります。編集は個別にのみ実行でき、バッチでは実行できません。
(1) テンプレートを変更し、チェック ボックスを追加します。
id | 部门 | 所属部门 | 排序 | 备注 | 编辑数据 | 删除 |
{$vol.id} | {$vol.name} |
|
{$vol.sort} | {$vol.remark} | <td><a href="__CONTROLLER__/edit/id/{$vol.id}">编辑</a></td>
(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('删除失败'); } }
上記ThinkPHP 部門のすべての管理機能です。
関連参照:thinkphp チュートリアル
以上が部門管理機能の導入の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。