分页工具
优质
小牛编辑
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_STYLE
和 FULL_PAGE_STYLE
这两种样式。 默认是 DEFAULT_PAGE_STYLE
. 下面我们一起来看看有哪些API:
构造函数:__construct($rows_num, $pagesize, $page_now, $outPage)
参数名称 | 参数类型 | 参数说明 |
---|---|---|
$rows_num | int | 总记录数 |
$pagesize | int | 每页包含记录数 |
$page_now | int | 当前页码 |
$outPage | int | (当前页)左右各输出的页数 |
showPageHandle($style = DEFAULT_PAGE_STYLE)
输出分页菜单
参数名称 | 参数类型 | 参数说明 |
---|---|---|
$style | int | 分页菜单的样式,默认为 DEFAULT_PAGE_STYLE |
getPageData( $style = DEFAULT_PAGE_STYLE )
该方法用来获取分页数据,从而你可以自己自定义的打印分页菜单。
参数名称 | 参数类型 | 参数说明 |
---|---|---|
$style | int | 分页菜单的样式,默认为 DEFAULT_PAGE_STYLE |
@return | array | 分页数据,数据结构请参考 分页数据结构 |
分页数据结构
key | value 说明 |
---|---|
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">«</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">»</span></a></li>';
$pagemenu .= '</ul>';
}
$this->assign('pagemenu', $pagemenu);