thinkphp分页效果怎样
thinkphp5+layui实现的分页样式示例本文实例讲述了thinkphp5+layui实现的分页样式。分享给大家供大家参考,具体如下:
tp5之layui分页样式
1.分页类
路径:\thinkphp\library\think\paginator\driver
Layui.php
|
<?php namespace think\paginator\driver; use think\Paginator; class Layui extends Paginator { /** * 上一页按钮 * @param string $text * @return string */ protected function getPreviousButton( $text = "上一页" ) { if ( $this ->currentPage() <= 1) { return $this ->getDisabledTextWrapper( $text ); } $url = $this ->url( $this ->currentPage() - 1 ); return $this ->getPageLinkWrapper( $url , $text ); } /** * 下一页按钮 * @param string $text * @return string */ protected function getNextButton( $text = '下一页' ) { if (! $this ->hasMore) { return $this ->getDisabledTextWrapper( $text ); } $url = $this ->url( $this ->currentPage() + 1); return $this ->getPageLinkWrapper( $url , $text ); } /** * 页码按钮 * @return string */ protected function getLinks() { if ( $this ->simple) return '' ; $block = [ 'first' => null, 'slider' => null, 'last' => null ]; $side = 3; $window = $side * 2; if ( $this ->lastPage < $window + 6) { $block [ 'first' ] = $this ->getUrlRange(1, $this ->lastPage); } elseif ( $this ->currentPage <= $window ) { $block [ 'first' ] = $this ->getUrlRange(1, $window + 2); $block [ 'last' ] = $this ->getUrlRange( $this ->lastPage - 1, $this ->lastPage); } elseif ( $this ->currentPage > ( $this ->lastPage - $window )) { $block [ 'first' ] = $this ->getUrlRange(1, 2); $block [ 'last' ] = $this ->getUrlRange( $this ->lastPage - ( $window + 2), $this ->lastPage); } else { $block [ 'first' ] = $this ->getUrlRange(1, 2); $block [ 'slider' ] = $this ->getUrlRange( $this ->currentPage - $side , $this ->currentPage + $side ); $block [ 'last' ] = $this ->getUrlRange( $this ->lastPage - 1, $this ->lastPage); } $html = '' ; if ( is_array ( $block [ 'first' ])) { $html .= $this ->getUrlLinks( $block [ 'first' ]); } if ( is_array ( $block [ 'slider' ])) { $html .= $this ->getDots(); $html .= $this ->getUrlLinks( $block [ 'slider' ]); } if ( is_array ( $block [ 'last' ])) { $html .= $this ->getDots(); $html .= $this ->getUrlLinks( $block [ 'last' ]); } return $html ; } /** * 渲染分页html * @return mixed */ public function render() { if ( $this ->hasPages()) { if ( $this ->simple) { return sprintf( '<ul class="pager">%s %s</ul>' , $this ->getPreviousButton(), $this ->getNextButton() ); } else { return sprintf( '%s %s %s' , $this ->getPreviousButton(), $this ->getLinks(), $this ->getNextButton() ); } } } /** * 生成一个可点击的按钮 * * @param string $url * @param int $page * @return string */ protected function getAvailablePageWrapper( $url , $page ) { return '<a href="' . htmlentities( $url ) . '" rel="external nofollow" >' . $page . '</a>' ; } /** * 生成一个禁用的按钮 * * @param string $text * @return string */ protected function getDisabledTextWrapper( $text ) { return '<a class="layui-laypage-prev" >' . $text . '</a>' ; } /** * 生成一个激活的按钮 * * @param string $text * @return string */ protected function getActivePageWrapper( $text ) { return '<span class="layui-laypage-curr"> <em class="layui-laypage-em"></em><em>' . $text . '</em></span>' ; } /** * 生成省略号按钮 * * @return string */ protected function getDots() { return $this ->getDisabledTextWrapper( '...' ); } /** * 批量生成页码按钮. * * @param array $urls * @return string */ protected function getUrlLinks( array $urls ) { $html = '' ; foreach ( $urls as $page => $url ) { $html .= $this ->getPageLinkWrapper( $url , $page ); } return $html ; } /** * 生成普通页码按钮 * * @param string $url * @param int $page * @return string */ protected function getPageLinkWrapper( $url , $page ) { if ( $page == $this ->currentPage()) { return $this ->getActivePageWrapper( $page ); } return $this ->getAvailablePageWrapper( $url , $page ); } } |
2.配置文件
paginate.php
|
<?php /** * @auther: xxf * Date: 2019/9/2 * Time: 10:24 */ //分页配置 return [ 'type' => 'Layui' , 'var_page' => 'page' , ]; |
3.模型查询
|
public function getUserShowList( $size = 20, $where = null) { $res = $this ->field( 'id,title,list_order,is_top,create_time,create_time time' ) ->where( $where ) ->order([ 'is_top' => 'desc' , 'list_order' => 'desc' , 'id' => 'desc' ]) ->paginate( $size ); return $res ; } |
4.模板渲染
|
< li class = "layui-box layui-laypage layui-laypage-molv" >{$list|raw}</ li > |
效果
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
原文链接:https://blog.csdn.net/flysnownet/article/details/100247490