效果

tp5.0使用方法

page下载地址:进入下载页面 提取码:s75k

  1. 1,把page文件夹整个目录复制到 目录extend
  2.  
  3. 2,修改默认配置 app/config.php
  4.  
  5. 把里面的
  6.  
  7. 'paginate' => [
  8. 'type' => 'page\Page',//修改这个 原始为bootstrap
  9. 'var_page' => 'page',
  10. 'list_rows' => 5,
  11. ],
  12.  
  13. 3,控制器中 ,参考一下
  14.  
  15. $name=$request->param('name');//接受参数一定要用param接收 可以接收post和get
  16. $where=[['status','eq',1]];
  17. if (!empty($name)){
  18. $where[]=['name','like',"%$name%"];
  19. }
  20.  
  21. $delList=Db::table('staff')
  22. ->where($where)
  23. ->order('id asc')
  24. ->paginate(4,false,['query'=>$request->param()]);
  25.  
  26. 4,视图中
  27.  
  28. {$delList->render()}

tp5.1使用方法

  1. 1,把page文件夹整个目录复制到 目录extend
  2.  
  3. 2,控制器中的方法
  4.  
  5. public function index(Request $request)
  6. {
  7. $name=$request->param('name');//接受参数一定要用param接收 可以接收post和get
  8. $where=[['status','eq',1]];
  9. if (!empty($name)){
  10. $where[]=['name','like',"%$name%"];
  11. }
  12. $list=Db::table('staff')
  13. ->where($where)
  14. ->order('id asc')
  15. ->paginate(12,false,['query'=>$request->param(),'type' => 'page\Page','var_page' => 'page']);
  16. $page=$list->render();
  17. //paginate第一个参数为每页显示的条数
  18. //paginate第二个参数为简单模式或总数
  19. //paginate第三个参数为分页的条件 也可以写数组
  20. //总条数
  21. $allData=Db::table('staff')->where('status',1)->count();
  22. $this->assign('list',$list);
  23. $this->assign('page',$page);
  24. $this->assign('count',$allData);
  25. return $this->fetch('staff-list');
  26. }
  27.  
  28. 3,视图中,一定要写raw,具体含义看文档
  29.  
  30. {$page|raw}

Page.php 如下图

  1. <?php
  2. namespace page;
  3. // +----------------------------------------------------------------------
  4. // | ThinkPHP [ WE CAN DO IT JUST THINK ]
  5. // +----------------------------------------------------------------------
  6. // | Copyright (c) 2006~2017 http://thinkphp.cn All rights reserved.
  7. // +----------------------------------------------------------------------
  8. // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
  9. // +----------------------------------------------------------------------
  10. // | Author: zhangyajun <448901948@qq.com>
  11. // +----------------------------------------------------------------------
  12.  
  13. use think\Paginator;
  14.  
  15. class Page extends Paginator
  16. {
  17.  
  18. //首页
  19. protected function home() {
  20. if ($this->currentPage() > 1) {
  21. return "<a href='" . $this->url(1) . "' title='首页'>首页</a>";
  22. } else {
  23. return "<p>首页</p>";
  24. }
  25. }
  26.  
  27. //上一页
  28. protected function prev() {
  29. if ($this->currentPage() > 1) {
  30. return "<a href='" . $this->url($this->currentPage - 1) . "' title='上一页'>上一页</a>";
  31. } else {
  32. return "<p>上一页</p>";
  33. }
  34. }
  35.  
  36. //下一页
  37. protected function next() {
  38. if ($this->hasMore) {
  39. return "<a href='" . $this->url($this->currentPage + 1) . "' title='下一页'>下一页</a>";
  40. } else {
  41. return"<p>下一页</p>";
  42. }
  43. }
  44.  
  45. //尾页
  46. protected function last() {
  47. if ($this->hasMore) {
  48. return "<a href='" . $this->url($this->lastPage) . "' title='尾页'>尾页</a>";
  49. } else {
  50. return "<p>尾页</p>";
  51. }
  52. }
  53.  
  54. //统计信息
  55. protected function info(){
  56. return "<p class='pageRemark'>共<b>" . $this->lastPage .
  57. "</b>页 <b>" . $this->total . "</b>条数据</p>";
  58. }
  59.  
  60. /**
  61. * 页码按钮
  62. * @return string
  63. */
  64. protected function getLinks()
  65. {
  66.  
  67. $block = [
  68. 'first' => null,
  69. 'slider' => null,
  70. 'last' => null
  71. ];
  72.  
  73. $side = 3;
  74. $window = $side * 2;
  75.  
  76. if ($this->lastPage < $window + 6) {
  77. $block['first'] = $this->getUrlRange(1, $this->lastPage);
  78. } elseif ($this->currentPage <= $window) {
  79. $block['first'] = $this->getUrlRange(1, $window + 2);
  80. $block['last'] = $this->getUrlRange($this->lastPage - 1, $this->lastPage);
  81. } elseif ($this->currentPage > ($this->lastPage - $window)) {
  82. $block['first'] = $this->getUrlRange(1, 2);
  83. $block['last'] = $this->getUrlRange($this->lastPage - ($window + 2), $this->lastPage);
  84. } else {
  85. $block['first'] = $this->getUrlRange(1, 2);
  86. $block['slider'] = $this->getUrlRange($this->currentPage - $side, $this->currentPage + $side);
  87. $block['last'] = $this->getUrlRange($this->lastPage - 1, $this->lastPage);
  88. }
  89.  
  90. $html = '';
  91.  
  92. if (is_array($block['first'])) {
  93. $html .= $this->getUrlLinks($block['first']);
  94. }
  95.  
  96. if (is_array($block['slider'])) {
  97. $html .= $this->getDots();
  98. $html .= $this->getUrlLinks($block['slider']);
  99. }
  100.  
  101. if (is_array($block['last'])) {
  102. $html .= $this->getDots();
  103. $html .= $this->getUrlLinks($block['last']);
  104. }
  105.  
  106. return $html;
  107. }
  108.  
  109. /**
  110. * 渲染分页html
  111. * @return mixed
  112. */
  113. public function render()
  114. {
  115. if ($this->hasPages()) {
  116. if ($this->simple) {
  117. return sprintf(
  118. '%s<div class="pagination">%s %s %s</div>',
  119. $this->css(),
  120. $this->prev(),
  121. $this->getLinks(),
  122. $this->next()
  123. );
  124. } else {
  125. return sprintf(
  126. '%s<div class="pagination">%s %s %s %s %s %s</div>',
  127. $this->css(),
  128. $this->home(),
  129. $this->prev(),
  130. $this->getLinks(),
  131. $this->next(),
  132. $this->last(),
  133. $this->info()
  134. );
  135. }
  136. }
  137. }
  138.  
  139. /**
  140. * 生成一个可点击的按钮
  141. *
  142. * @param string $url
  143. * @param int $page
  144. * @return string
  145. */
  146. protected function getAvailablePageWrapper($url, $page)
  147. {
  148. return '<a href="' . htmlentities($url) . '" title="第"'. $page .'"页" >' . $page . '</a>';
  149. }
  150.  
  151. /**
  152. * 生成一个禁用的按钮
  153. *
  154. * @param string $text
  155. * @return string
  156. */
  157. protected function getDisabledTextWrapper($text)
  158. {
  159. return '<p class="pageEllipsis">' . $text . '</p>';
  160. }
  161.  
  162. /**
  163. * 生成一个激活的按钮
  164. *
  165. * @param string $text
  166. * @return string
  167. */
  168. protected function getActivePageWrapper($text)
  169. {
  170. return '<a href="" class="cur">' . $text . '</a>';
  171. }
  172.  
  173. /**
  174. * 生成省略号按钮
  175. *
  176. * @return string
  177. */
  178. protected function getDots()
  179. {
  180. return $this->getDisabledTextWrapper('...');
  181. }
  182.  
  183. /**
  184. * 批量生成页码按钮.
  185. *
  186. * @param array $urls
  187. * @return string
  188. */
  189. protected function getUrlLinks(array $urls)
  190. {
  191. $html = '';
  192.  
  193. foreach ($urls as $page => $url) {
  194. $html .= $this->getPageLinkWrapper($url, $page);
  195. }
  196.  
  197. return $html;
  198. }
  199.  
  200. /**
  201. * 生成普通页码按钮
  202. *
  203. * @param string $url
  204. * @param int $page
  205. * @return string
  206. */
  207. protected function getPageLinkWrapper($url, $page)
  208. {
  209. if ($page == $this->currentPage()) {
  210. return $this->getActivePageWrapper($page);
  211. }
  212.  
  213. return $this->getAvailablePageWrapper($url, $page);
  214. }
  215.  
  216. /**
  217. * 分页样式
  218. */
  219. protected function css(){
  220. return ' <style type="text/css">
  221. .pagination p{
  222. margin:0;
  223. cursor:pointer
  224. }
  225. .pagination{
  226. height:40px;
  227. padding:20px 0px;
  228. }
  229. .pagination a{
  230. display:block;
  231. float:left;
  232. margin-right:10px;
  233. padding:2px 12px;
  234. height:24px;
  235. border:1px #cccccc solid;
  236. background:#fff;
  237. text-decoration:none;
  238. color:#808080;
  239. font-size:12px;
  240. line-height:24px;
  241. }
  242. .pagination a:hover{
  243. color:#077ee3;
  244. background: white;
  245. border:1px #077ee3 solid;
  246. }
  247. .pagination a.cur{
  248. border:none;
  249. background:#077ee3;
  250. color:#fff;
  251. }
  252. .pagination p{
  253. float:left;
  254. padding:2px 12px;
  255. font-size:12px;
  256. height:24px;
  257. line-height:24px;
  258. color:#bbb;
  259. border:1px #ccc solid;
  260. background:#fcfcfc;
  261. margin-right:8px;
  262. }
  263. .pagination p.pageRemark{
  264. border-style:none;
  265. background:none;
  266. margin-right:0px;
  267. padding:4px 0px;
  268. color:#666;
  269. }
  270. .pagination p.pageRemark b{
  271. color:red;
  272. }
  273. .pagination p.pageEllipsis{
  274. border-style:none;
  275. background:none;
  276. padding:4px 0px;
  277. color:#808080;
  278. }
  279. .dates li {font-size: 14px;margin:20px 0}
  280. .dates li span{float:right}
  281. </style>';
  282. }
  283. }

-----------------------------------------------------------------------

优化如下:

超好用的thinkphp5.0/thinkphp5.1分页插件!详细使用步骤(内附代码)的更多相关文章

  1. 基于Thinkphp5.0 小程序登录插件应用

    资源连接: wulongtao/think-wxminihelper 具体怎么安装,不介绍了,有不懂再问我吧: 主要重点如下: wepy:index.wpy this.$parent.getUserI ...

  2. thinkphp5.0使用官方验证码插件

    1.首先使用Composer下载验证码插件. 安装完成后,使用以下命令修改composer配置文件,使用国内镜像.原因你懂的. composer config -g repo.packagist co ...

  3. MyBatis3.4.0以上的分页插件错误:Could not find method on interface org.apache.ibatis.executor.statement.StatementHandler named prepare. Cause: java.lang.NoSuchMethodException: org.apache.ibatis.executor.stateme

    错误: Could not find method on interface org.apache.ibatis.executor.statement.StatementHandler named p ...

  4. 高性能PHP框架thinkphp5.0.0 Beta发布-为API开发而设计

    ThinkPHP V5.——为API开发而设计的高性能框架 ThinkPHP5..0版本是一个颠覆和重构版本,采用全新的架构思想,引入了很多的PHP新特性,优化了核心,减少了依赖,实现了真正的惰性加载 ...

  5. thinkphp5.0 自动加载

    自动加载 概述 ThinkPHP5.0真正实现了按需加载,所有类库采用自动加载机制,并且支持类库映射和composer类库的自动加载. 自动加载的实现由think\Loader类库完成,自动加载规范符 ...

  6. ThinkPHP5.0中Redis的使用和封装(原创)

    Redis是一种常用的非关系型数据库,主要用作数据缓存,数据保存形式为key-value,键值相互映射.它的数据存储跟MySQL不同,它数据存储在内存之中,所以数据读取相对而言很快,用来做高并发非常不 ...

  7. thinkphp5.0学习笔记(三)获取信息,变量,绑定参数

    1.构造函数: 控制器类必须继承了\think\Controller类,才能使用: 方法_initialize 代码: <?php namespace app\lian\controller; ...

  8. Thinkphp5.0 在自己定义一个公共方法的控制器并且继承了Controller类的时候报错

    在建立网站的时候,你通常想着把一些共有的方法提取出来,放入一个控制器内,如果你是将业务逻辑写入了构造函数里面,那么就得注意了. 在thinkphp5.0当中,有一个初始化的方法,类似于构造函数,那就是 ...

  9. thinkphp5.0无限极分类及格式化输出

    首先我们来看数据表 从上图中可以发现,中国下有贵州,北京两个子节点,而北京有天安门一个子节点,纽约的子节点是"纽约的子类". 从pid为0看出,中国和纽约是顶级节点. 因为贵州的p ...

随机推荐

  1. paper 133:结构张量Structure Tensor(一)

    1.结构张量的作用:       能够区分图像中的平坦区域,边缘,角点: 2.图像中的结构张量的定义    1)是一个矩阵:    2)与图像的水平,垂直梯度有关,定义如下: 在MATLAB中,可以用 ...

  2. nginx 全面优化 负载均衡

    修改nginx.conf文件,它保存有nginx不同模块的全部设置.如果是原生安装的话应该在服务器的 /etc/nginx 目录找到 nginx.conf ,使用其它安装包的话也可以自行查找nginx ...

  3. send_keys报错element not interactable

    这两天要在阿里云日志中操作UI,以输入关键字搜索日志. 在send_keys时报错element not interactable. iframe 第一个问题是iframe,通过切换iframe解决: ...

  4. C#基本语法1 ----> 实例

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. ///////////////////////////////////////////////////////////////////// ...

  5. CentOS6.5源码安装MySQL5.6.35

    CentOS6.5源码安装MySQL5.6.35 一.卸载旧版本 1.使用下面的命令检查是否安装有mysql [root@localhost tools]# rpm -qa|grep -i mysql ...

  6. MATLAB图像uint8,uint16,double, rgb转灰度解释

    1.uint8,uint16与double 为了节省存储空间,matlab为图像提供了特殊的数据类型uint8(8位无符号整数),以此方式存储的图像称作8位图像.matlab读入图像的数据是uint8 ...

  7. Pyhon 格式化输出的几种方式

    废话不多说,直接上代码 第一种格式化的输出方式,拼接我就不上了,不建议使用,数据多的时候自己都蒙圈 # -*- coding:utf-8 -*- # Author:覃振鸿 #格式化输出 name=in ...

  8. InnoDB B树 锁

    InnoDB B树 叶子=>主键+数记录非叶子=>主键1+主键3...主键4 事务和行锁 索引项加锁 相等条件来访问更新数据,避免使用范围条件 (1)InnoDB的行销是基于索引实现的,如 ...

  9. 4、服务注册&服务提供者

    1.什么是服务提供者 服务提供者(Service Provider):是指服务的被调用方(即:为其它服务提供服务的服务):服务提供者,作为一个Eureka Client,向Eureka Server做 ...

  10. 使用androidstudio时遇到的一些小错误

    1 路径名字中不能有汉字  报如下错误:Error:(1, 0) Your project path contains non-ASCII characters. This will most lik ...