当一个页面有9个页面时,我现在需要向临时页面添加分页: 1 2 3 ... 9
我想给出一个3到9之间的中间点,即
1 2 3 ... 6 ... 9
当我位于最后一页/中间页面时,我还希望具有相同的中间子页面。但这应该由您自己知道如何迈出第一步来完成。
我所有的想法都失败了。有人对这种解决方案有想法吗?
此处提供完整的工作代码:
io_context.run()
答案 0 :(得分:1)
一般的分页代码流可能如下所示:
<?php
function getPageDisplayArray(int $currentPage, int $totalCount, int $pageLen = 10): array
{
$paginationArr[$currentPage] = 1;
$totalPagesToDisplay = floor(($totalCount) / $pageLen);
//Get preceding pages logic
$pagesBefore = $currentPage - 1;
$iBefore = 2; //Number of pages you want befpre the current page
while($pagesBefore > 0 && $iBefore > 0) {
$paginationArr[$pagesBefore--] = 0;
$iBefore--;
}
//Get anteceding pages
$pagesAfter = $totalPagesToDisplay - ($pagesBefore + 1);
$iAfter = min([$pagesAfter, 2]); //Number of pages you want after your current page
while(-$iAfter < 0) {
//Either return the two pages after or don't if there are no pages after
$paginationArr[$iAfter + $currentPage] = 0;
$iAfter--;
}
if($pagesAfter > 2) {
//Calcluate Midpoint
$midpoint = floor($totalPagesToDisplay / 2) + 1;
if(!isset($paginationArr[$midpoint])) {
$paginationArr[$midpoint] = 0;
}
}
//Link the first page always if it hasn't already been set
if(!isset($paginationArr[1])) {
$paginationArr[1] = 0;
}
//Link the final page if it has not already been set.
if(!isset($paginationArr[$totalPagesToDisplay])) {
$paginationArr[$totalPagesToDisplay] = 0;
}
ksort($paginationArr);
return $paginationArr;
}
其中“当前页面”,“页面长度”和“总数”是您的参数。此处将在任一侧显示两个页面作为“显示”页面,以及任何arbitrart集合的集合的第一,最后和中间页面。这将返回一个配置数组,该数组将“活动”页面的值设置为1,将所有其他页面的键号设置为页面号,并将值设置为零。剩下的事情就是根据需要在布局中显示值。