haikara/pagination

该包最新版本(0.1.0)没有可用的许可信息。

0.1.0 2024-09-03 14:37 UTC

This package is auto-updated.

Last update: 2024-09-03 14:38:58 UTC


README

执行分页UI的后端处理。

$pagination = new Pagination(
    range: 5, // いくつページ番号を表示するか。奇数のみ指定可。
    display: 10, // 一覧の表示件数
    current: 6, // 現在のページ番号
    total: 200 // 全件数
);

$pages = $pagination->getPages();
print_r($pages);
// [4, 5, 6, 7, 8]

显示分页UI的示例。

<?php

$pagination = new Pagination(
    range: 5, // いくつページ番号を表示するか。奇数のみ指定可。
    display: 10, // 一覧の表示件数
    current: 6, // 現在のページ番号
    total: 200 // 全件数
);

?>

<p>
    <?= sprintf(
        '全%s件中%s件〜%s件',
        $pagination->getTotal(),
        $pagination->getDisplayFirst(),
        $pagination->getDisplayLast()
    ) ?>
</p>

<ul>
    <li>
        <a href="./?page=1">最初へ</a>
    </li>
    <li>
        <a href="<?= $pagination->isFirst() ? 'javascript:void(0)' : "./?page={$pagination->getPrev()}" ?>">前へ</a>
    </li>

    <?php foreach($pagination as $page) : ?>
    <li class="page-num <?= $pagination->isCurrent($page) ? '-current' : ''?>">
        <a href="./?page=<?= $page ?>">$page</a>
    </li>
    <?php endforeach; ?>

    <li>
        <a href="<?= $pagination->isLast() ? 'javascript:void(0)' : "./?page={$pagination->getNext()}" ?>">次へ</a>
    </li>
    <li>
        <a href="./?page=<?= $pagination->getLast() ?>">最後へ</a>
    </li>
</ul>

根据上述描述,以下HTML可以被构建。

<p>全98件中51件〜60件</p>

<ul>
    <li>
        <a href="./?page=1">最初へ</a>
    </li>
    <li>
        <a href="./?page=5">前へ</a>
    </li>
    <li class="page-num ">
        <a href="./?page=4">4</a>
    </li>
    <li class="page-num ">
        <a href="./?page=5">5</a>
    </li>
    <li class="page-num -current">
        <a href="./?page=6">6</a>
    </li>
    <li class="page-num ">
        <a href="./?page=7">7</a>
    </li>
    <li class="page-num ">
        <a href="./?page=8">8</a>
    </li>
    <li>
        <a href="./?page=7">次へ</a>
    </li>
    <li>
        <a href="./?page=10">最後へ</a>
    </li>
</ul>