当前位置:首页 > CMS教程 > Thinkphp > 列表

thinkphp5+layui实现的分页样式示例

发布:smiling 来源: PHP粉丝网  添加日期:2021-12-27 15:12:46 浏览: 评论:0 

这篇文章主要介绍了thinkphp5+layui实现的分页样式,结合实例形式详细分析了thinkPHP5框架结合layui实现的分页功能相关的配置、查询等操作技巧,需要的朋友可以参考下。

本文实例讲述了thinkphp5+layui实现的分页样式,分享给大家供大家参考,具体如下:

tp5之layui分页样式

1.分页类

路径:\thinkphp\library\think\paginator\driver

Layui.php

  1. <?php 
  2. namespace think\paginator\driver; 
  3. use think\Paginator; 
  4. class Layui extends Paginator 
  5.   /** 
  6.    * 上一页按钮 
  7.    * @param string $text 
  8.    * @return string 
  9.    */ 
  10.   protected function getPreviousButton($text = "上一页"
  11.   { 
  12.     if ($this->currentPage() <= 1) { 
  13.       return $this->getDisabledTextWrapper($text); 
  14.     } 
  15.     $url = $this->url( 
  16.       $this->currentPage() - 1 
  17.     ); 
  18.     return $this->getPageLinkWrapper($url$text); 
  19.   } 
  20.   /** 
  21.    * 下一页按钮 
  22.    * @param string $text 
  23.    * @return string 
  24.    */ 
  25.   protected function getNextButton($text = '下一页'
  26.   { 
  27.     if (!$this->hasMore) { 
  28.       return $this->getDisabledTextWrapper($text); 
  29.     } 
  30.     $url = $this->url($this->currentPage() + 1); 
  31.     return $this->getPageLinkWrapper($url$text); 
  32.   } 
  33.   /** 
  34.    * 页码按钮 
  35.    * @return string 
  36.    */ 
  37.   protected function getLinks() 
  38.   { 
  39.     if ($this->simple) 
  40.       return ''
  41.     $block = [ 
  42.       'first' => null, 
  43.       'slider' => null, 
  44.       'last'  => null 
  45.     ]; 
  46.     $side  = 3; 
  47.     $window = $side * 2; 
  48.     if ($this->lastPage < $window + 6) { 
  49.       $block['first'] = $this->getUrlRange(1, $this->lastPage); 
  50.     } elseif ($this->currentPage <= $window) { 
  51.       $block['first'] = $this->getUrlRange(1, $window + 2); 
  52.       $block['last'] = $this->getUrlRange($this->lastPage - 1, $this->lastPage); 
  53.     } elseif ($this->currentPage > ($this->lastPage - $window)) { 
  54.       $block['first'] = $this->getUrlRange(1, 2); 
  55.       $block['last'] = $this->getUrlRange($this->lastPage - ($window + 2), $this->lastPage); 
  56.     } else { 
  57.       $block['first'] = $this->getUrlRange(1, 2); 
  58.       $block['slider'] = $this->getUrlRange($this->currentPage - $side$this->currentPage + $side); 
  59.       $block['last']  = $this->getUrlRange($this->lastPage - 1, $this->lastPage); 
  60.     } 
  61.     $html = ''
  62.     if (is_array($block['first'])) { 
  63.       $html .= $this->getUrlLinks($block['first']); 
  64.     } 
  65.     if (is_array($block['slider'])) { 
  66.       $html .= $this->getDots(); 
  67.       $html .= $this->getUrlLinks($block['slider']); 
  68.     } 
  69.     if (is_array($block['last'])) { 
  70.       $html .= $this->getDots(); 
  71.       $html .= $this->getUrlLinks($block['last']); 
  72.     } 
  73.     return $html
  74.   } 
  75.   /** 
  76.    * 渲染分页html 
  77.    * @return mixed 
  78.    */ 
  79.   public function render() 
  80.   { 
  81.     if ($this->hasPages()) { 
  82.       if ($this->simple) { 
  83.         return sprintf( 
  84.           '<ul class="pager">%s %s</ul>'
  85.           $this->getPreviousButton(), 
  86.           $this->getNextButton() 
  87.         ); 
  88.       } else { 
  89.         return sprintf( 
  90.           '%s %s %s'
  91.           $this->getPreviousButton(), 
  92.           $this->getLinks(), 
  93.           $this->getNextButton() 
  94.         ); 
  95.       } 
  96.     } 
  97.   } 
  98.   /** 
  99.    * 生成一个可点击的按钮 
  100.    * 
  101.    * @param string $url 
  102.    * @param int  $page 
  103.    * @return string 
  104.    */ 
  105.   protected function getAvailablePageWrapper($url$page
  106.   { 
  107.     return '<a href="' . htmlentities($url) . '" rel="external nofollow" >' . $page . '</a>'
  108.   } 
  109.   /** 
  110.    * 生成一个禁用的按钮 
  111.    * 
  112.    * @param string $text 
  113.    * @return string 
  114.    */ 
  115.   protected function getDisabledTextWrapper($text
  116.   { 
  117.     return '<a class="layui-laypage-prev" >' . $text . '</a>'
  118.   } 
  119.   /** 
  120.    * 生成一个激活的按钮 
  121.    * 
  122.    * @param string $text 
  123.    * @return string 
  124.    */ 
  125.   protected function getActivePageWrapper($text
  126.   { 
  127.     return '<span class="layui-laypage-curr"> <em class="layui-laypage-em"></em><em>' . $text . '</em></span>'
  128.   } 
  129.   /** 
  130.    * 生成省略号按钮 
  131.    * 
  132.    * @return string 
  133.    */ 
  134.   protected function getDots() 
  135.   { 
  136.     return $this->getDisabledTextWrapper('...'); 
  137.   } 
  138.   /** 
  139.    * 批量生成页码按钮. 
  140.    * 
  141.    * @param array $urls 
  142.    * @return string 
  143.    */ 
  144.   protected function getUrlLinks(array $urls
  145.   { 
  146.     $html = ''
  147.     foreach ($urls as $page => $url) { 
  148.       $html .= $this->getPageLinkWrapper($url$page); 
  149.     } 
  150.     return $html
  151.   } 
  152.   /** 
  153.    * 生成普通页码按钮 
  154.    * 
  155.    * @param string $url 
  156.    * @param int  $page 
  157.    * @return string 
  158.    */ 
  159.   protected function getPageLinkWrapper($url$page
  160.   { 
  161.     if ($page == $this->currentPage()) { 
  162.       return $this->getActivePageWrapper($page); 
  163.     } 
  164.     return $this->getAvailablePageWrapper($url$page); 
  165.   } 

2.配置文件

paginate.php

  1. <?php 
  2. /** 
  3.  * @auther: xxf 
  4.  * Date: 2019/9/2 
  5.  * Time: 10:24 
  6.  */ 
  7. //分页配置 
  8. return [ 
  9.   'type' => 'Layui'
  10.   'var_page' => 'page'
  11. ]; 

3.模型查询

  1. public function getUserShowList($size = 20, $where = null) 
  2.     $res = $this 
  3.       ->field('id,title,list_order,is_top,create_time,create_time time'
  4.       ->where($where
  5.       ->order(['is_top' => 'desc''list_order' => 'desc''id' => 'desc']) 
  6.       ->paginate($size); 
  7.     return $res

4.模板渲染

<div class="layui-box layui-laypage layui-laypage-molv">{$list|raw}</div>

效果

thinkphp5分页 layui分页

Tags: thinkphp5分页 layui分页

分享到: