分页工具

优质
小牛编辑
127浏览
2023-12-01

我们的分页采用的组件化实现方式,就是把一个分页菜单拆分成多个组件,比如 总页数上一页 等。

//定制分页组件
define( 'PAGE_TOTAL_NUM', 1<<0 );   //总页数
define( 'PAGE_PREV', 1<<1 );        //上一页
define( 'PAGE_DOT', 1<< 2);         //省略号
define( 'PAGE_LIST', 1<<3 );        //分页数字
define( 'PAGE_NEXT', 1<<4 );        //下一页
define( 'PAGE_INPUT', 1<<5 );       //跳转页
define( 'DEFAULT_PAGE_STYLE', PAGE_TOTAL_NUM | PAGE_PREV | PAGE_LIST | PAGE_NEXT );  //默认样式
define( 'FULL_PAGE_STYLE', DEFAULT_PAGE_STYLE | PAGE_INPUT  );

这样你就可以定制你的分页菜单,想输出哪个组件就输出哪个组件,我们还为你定制了 DEFAULT_PAGE_STYLEFULL_PAGE_STYLE 这两种样式。 默认是 DEFAULT_PAGE_STYLE. 下面我们一起来看看有哪些API:

构造函数:__construct($rows_num, $pagesize, $page_now, $outPage)

参数名称参数类型参数说明
$rows_numint总记录数
$pagesizeint每页包含记录数
$page_nowint当前页码
$outPageint(当前页)左右各输出的页数

showPageHandle($style = DEFAULT_PAGE_STYLE)

输出分页菜单

参数名称参数类型参数说明
$styleint分页菜单的样式,默认为 DEFAULT_PAGE_STYLE

getPageData( $style = DEFAULT_PAGE_STYLE )

该方法用来获取分页数据,从而你可以自己自定义的打印分页菜单。

参数名称参数类型参数说明
$styleint分页菜单的样式,默认为 DEFAULT_PAGE_STYLE
@returnarray分页数据,数据结构请参考 分页数据结构

分页数据结构

keyvalue 说明
url当前页面的url(已经移除过page参数)
prev上一页的url
next下一页的url
list页码列表数据,是一个二位数组,数组的元素一个 page => url 的 key => value数组。

一个简单的栗子:


$total = 1000;
$pagesize = 20;
$page = 1;
//初始化分页类
$pageHandler = new Page($total, $pagesize, $page);

//获取分页数据
$pageData = $pageHandler->getPageData(DEFAULT_PAGE_STYLE);
//组合分页HTML代码
if ( $pageData ) {
    $pagemenu = '<ul class="pagination">';
    $pagemenu .= '<li><a href="'.$pageData['prev'].'" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>';
    foreach ( $pageData['list'] as $key => $value ) {
        if ( $key == $page ) {
            $pagemenu .= '<li class="active"><a href="#fakelink">'.$key.'</a></li> ';
        } else {
            $pagemenu .= '<li><a href="'.$value.'">'.$key.'</a></li> ';
        }
    }
    $pagemenu .= '<li><a href="'.$pageData['next'].'" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li>';
    $pagemenu .= '</ul>';
}

$this->assign('pagemenu', $pagemenu);