【一】准备工作

(1)创建菜单,修改跳转路径

         <li>
<a href="javascript:;" class="workerManage">职员管理</a>
<ul>
<li><a href="{:U('User/showList')}" class="workerManage">职员列表</a></li>
<li><a href="{:U('User/add')}" class="workerManage">添加职员</a></li>
</ul>
</li>

(2)创建控制器UserController.class.php

<?php
namespace Admin\Controller;
use Think\Controller;
class UserController extends Controller{
}
?>

【二】职员添加

分析:控制器UserController.class.php

方法:add

模板:add.html

(1)add方法,展示添加职员的模板

public function add(){
$this->display();
}

(2)复制模板文件add.html到指定位置Admin/View/User/add.html,修改静态资源路径

(3)改写add方法,查询部门信息,展示到模板的下拉列表

public function add(){
//查询部门信息
$data = M('dept')->field('id,name')->select();
$this->assign('data',$data);
$this->display();
}
所属部门:
<select name="dept_id">
<foreach name="data" item="fo">
<option value="{$fo.id}">{$fo.name}</option>
</foreach>
</select>

(4)检查模板表单

提交单当前页面可以不写,或者当前控制器下的add方法

<form action="" method="post">
<fieldset>
<legend>添加职员</legend>
<p><label for="username">用户名:</label><input type="text" name="username" id="username"></p>
<p><label for="password">密码:</label><input type="text" name="password" id="password"></p>
<p><label for="nickname">姓名:</label><input type="text" name="nickname" id="nickname"></p>
<p><label for="truename">全称:</label><input type="text" name="truename" id="truename"></p>
<p>所属部门:
<select name="dept_id">
<foreach name="data" item="fo">
<option value="{$fo.id}">{$fo.name}</option>
</foreach>
</select>
</p>
<p>
性别:
<label for="man">男</label><input type="radio" name="sex" value="1" id="man">
<label for="woman">女</label><input type="radio" name="sex" value="2" id="woman">
</p>
<p><label for="birthday">生日:</label><input type="date" name="birthday" id="birthday"></p>
<p><label for="tel">联系电话:</label><input type="text" name="tel" id="tel"></p>
<p><label for="email">邮箱:</label><input type="text" name="email" id="email"></p>
<p><label for="remark">备注:</label><textarea name="remark" id="remark"></textarea></p>
<p>
<a href="javascript:;" id="submitBtn">提交</a>
<a href="javascript:;" id="resetBtn">清空</a>
</p>
</fieldset>
</form>
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#submitBtn').on('click',function(){
$('form').submit();
});
$('#resetBtn').on('click',function(){
$('form').get(0).reset();
});
});
</script>

注意:

①清空方法记得将jquery对象转化为js的dom对象,否则无法用js的reset重置操作

②时间控件用的H5的type="date"

(5)改写add方法,编写处理表单代码,实现数据的接收和入库

public function add(){
if(IS_POST){//数据提交
// 数据对象创建方法接收数据
$model = M('user');
//创建数据对象(因为还有一个发布时间,在模板里没有,所以要在这里添加)
$data = $model->create();
//添加时间字段
$data['addtime'] = time();
//写入数据表
$result = $model->add($data);
if ($result) {
$this->success('添加成功',U('showList'),3);
}else{
$this->error('添加失败');
}
}else{//模板展示
//查询部门信息
$data = M('dept')->field('id,name')->select();//select返回二维数组,find返回一维数组
$this->assign('data',$data);
$this->display();
}
}

【三】职员列表的展示

控制器:UserController.class.php

方法:showlist

模板:showList.html

(1)创建showList方法,展示数据和模板

public function showList(){
//展示数据
$data = M('user')->select();
$this->assign('data',$data);
//展示模板
$this->display();
}

(2)将模板文件showList.html复制到指定位置Admin/View/User/showList.html,修改静态资源路径

(3)将data数据展示到模板

注意:因为data是select查询返回的结果,所以是二维数组。在模板里需要遍历

<table border="1" cellspacing="0" cellpadding="10">
<thead>
<tr><td>序号</td><td>姓名</td><td>昵称</td><td>所属部门</td><td>性别</td><td>生日</td><td>电话</td><td>邮箱</td>
<td>添加时间</td><td>编辑</td></tr>
</thead>
<foreach>
<volist name="data" id="vol">
<tr>
<td>{$vol.id}</td>
<td>{$vol.username}</td>
<td>{$vol.nickname}</td>
<td>{$vol.dept_id}</td>
<td>{$vol.sex}</td>
<td>{$vol.birthday}</td>
<td>{$vol.tel}</td>
<td>{$vol.email}</td>
<td>{$vol.addtime|date='Y-m-d H:i:s',###}</td>
<td><a href="javascript:;">编辑</a></td>
</tr>
</volist>
</foreach>
</table>

【四】使用数据分页类实现分页

分析,因为是在数据展示基础上分页,所以控制器、方法、模板与展示功能出的一致

一共七步:这里粘贴出完整代码

public function showList(){
//实例化模型
$model = M('user');
//1. 查询总记录数.如果后期做逻辑删除时可以加上状态条件筛选-----$model->where('status=1')->count();
$count=$model->count();
//2. 实例化分页类 传入总记录数和每页显示的记录数(2)
$Page= new \Think\Page($count,2);
//3. 可选步骤,定制分页按钮的提示文字
$Page-> rollPage = 3;
$Page-> lastSuffix=false;
$Page->setConfig('prev','上一页');
$Page->setConfig('next','下一页');
$Page->setConfig('last','末页');
$Page->setConfig('first','首页');
//4. 通过show方法,输出分页url连接,分页显示输出
$show = $Page->show();
//5. 使用limit方法查询数据
$data = $model->limit($Page->firstRow.','.$Page->listRows)->select();
//6. 传递模板(数据集、分页输出)
$this->assign('data',$data);
$this->assign('show',$show);
$this->assign('count',$count);
//7. 展示模板
$this->display();
}

输出show方法的结果:假如这里一共分5页,当前页current为1,下一页next为2

string(382) "<div>
<span class="current">1</span>
<a class="num" href="/index.php/Admin/User/showList/p/2.html">2</a>
<a class="num" href="/index.php/Admin/User/showList/p/3.html">3</a>
<a class="num" href="/index.php/Admin/User/showList/p/4.html">4</a>
<a class="num" href="/index.php/Admin/User/showList/p/5.html">5</a>
<a class="next" href="/index.php/Admin/User/showList/p/2.html">>></a>
</div>"

注意:首页和尾页设置:代码不起作用,一般是大小写没写对(踩过的坑~~~)

①如果总页码数小于$rollPage(显示的页码数),则没有首页和末页的按钮,这时需要修改$rollPage的值(因为$rollPage是public权限,可以继承重写);

$Page-> rollPage = 3;

②分页类里有$lastSuffix显示尾页的页数,导致无法显示尾页的汉字,所以可以在控制器里覆盖重写

public $lastSuffix = true; // 最后一页是否显示总页数

修改:

$Page-> lastSuffix=false;

模板代码:

<table border="1" cellspacing="0" cellpadding="10">
<thead>
<tr><td>序号</td><td>姓名</td><td>昵称</td><td>所属部门</td><td>性别</td><td>生日</td><td>电话</td><td>邮箱</td>
<td>添加时间</td><td>编辑</td></tr>
</thead>
<volist name="data" id="vol">
<tr>
<td>{$vol.id}</td>
<td>{$vol.username}</td>
<td>{$vol.nickname}</td>
<td>{$vol.dept_id}</td>
<td>{$vol.sex}</td>
<td>{$vol.birthday}</td>
<td>{$vol.tel}</td>
<td>{$vol.email}</td>
<td>{$vol.addtime|date='Y-m-d H:i:s',###}</td>
<td><a href="javascript:;">编辑</a></td>
</tr>
</volist>
</table>
{$show}
<div>每页显示2条记录,总共{$count}条记录</div>

最新文章

  1. 方法传参(JAVA与C的比较)
  2. HDU 1394 Minimum Inversion Number ( 树状数组求逆序数 )
  3. 安装WampServer时出现的问题(丢失VCRUNTIME140.dll或MSVCR110.dll)以及解决办法
  4. c++与java中子类中调用父类成员的方法
  5. Python 和 R 数据分析/挖掘工具互查
  6. nginx+winsw windows服务
  7. c语言字符串操作大全
  8. C# 输出pdf文件流在页面上显示
  9. POM (Project Object Model)简介
  10. hadoop的安装
  11. cocoapods出现Diff: /../Podfile.lock: No such file or directory错误
  12. MVC每层的职责
  13. LR选择哪种方式录制
  14. 有关java中的final关键字
  15. Word文档合并
  16. Android开源项目库汇总
  17. Java 9 揭秘(13. Collection API 更新)
  18. DOM常用外部插入方法与区别
  19. Remove Google Play Games libraries on iOS (Unity3D开发之二十一)
  20. 谈谈java多线程(一)

热门文章

  1. MySQL-数据库创建与删除
  2. JavaScript基础 -- 常见DOM树操作
  3. 【bzoj2600】 [Ioi2011]ricehub
  4. YTU 2552: 好好学习天天向上
  5. luogu 3951 小凯的疑惑
  6. 第十四周 Leetcode 315. Count of Smaller Numbers After Self(HARD) 主席树
  7. hdu4292 Food 最大流模板题
  8. 【Learning】多项式的一些东西
  9. (数论)51NOD 1136 欧拉函数
  10. liunx 用户切换 su sudo