【问题标题】:Truncate Pagination with PHP使用 PHP 截断分页
【发布时间】:2020-04-24 17:26:47
【问题描述】:

您好,我正在尝试开发分页功能,但我的数字已满。 例如,我希望它是 。我知道这里有一些示例,但是我无法完全掌握他们在示例中所做的事情并将其与我的相关联。那么基本上我可以在哪里以及如何使用以下代码编写该 if 语句?

<?php
    $url = $this->url('stack-overflow');

    $next_data = $links['next_data'];

    $next_button = $links['current_page'] + 1;
    $prev_button = $links['current_page'] - 1;
    ?>
    <nav aria-label="Page navigation example">
        <ul class="pagination pagination-circle pg-blue">
            <?php
            if ($links['current_page'] > 1) {
            ?>
                <li class="page-item">
                    <a class="page-link" href="<?= $url . '?page=' . $prev_button ?>" aria-label="Previous">
                        <span aria-hidden="true">&laquo;</span>
                        <span class="sr-only">Previous</span>
                    </a>
                </li>
                <?php
            }
            //Loop through total pages
            for ($i = 1; $i <= $links['total_pages']; $i++) {
                if ($i === $links['current_page']) {
                ?>
                    <li class="page-item active"><a class="page-link" href="<?= $url . '?page=' . $i ?>"><?= $i ?></a></li>
                <?php
                } else {
                ?>
                    <li class="page-item"><a class="page-link" href="<?= $url . '?page=' . $i ?>"><?= $i ?></a></li>
                <?php
                }
            }

            if (!empty($next_data)) {
                ?>
                <li class="page-item">
                    <a class="page-link" href="<?= $url . '?page=' . $next_button ?>" aria-label="Next">
                        <span aria-hidden="true">&raquo;</span>
                        <span class="sr-only">Next</span>
                    </a>
                </li>
            <?php
            }
            ?>
        </ul>
    </nav>

【问题讨论】:

  • 那么你的问题到底是什么?
  • 嘿@Marcel,我的问题是如何用我的代码截断数字。我不确定如何编写该 if 语句以及在哪里编写。我应该从当前页面中减去一些东西吗?我真的很困惑。
  • 使用您的代码,如果有 1000 个页面,您的分页器会显示所有页面,不是吗?例如,我会选择下面的 5 个和上面的 5 个。为了实现这一点,您需要检查当前页面低于 5 是否不小于 1,反之亦然。我会做两个 for 循环,每个情况一个

标签: php html pagination


【解决方案1】:

你必须考虑到不同的可能性。

代码很脏,我建议你实现一个 Paginator 库来避免所有这些意大利面代码。

<?php
    $url = $this->url('stack-overflow');

    $next_data = $links['next_data'];

    $next_button = $links['current_page'] + 1;
    $prev_button = $links['current_page'] - 1;
    ?>

    <nav aria-label="Page navigation example">
    <ul class="pagination pagination-circle pg-blue">
        <?php
        if ($links['current_page'] > 1) {
        ?>
            <li class="page-item">
                <a class="page-link" href="<?= $url . '?page=' . $prev_button ?>" aria-label="Previous">
                    <span aria-hidden="true">&laquo;</span>
                    <span class="sr-only">Previous</span>
                </a>
            </li>
            <?php
        }
        // Below pages
        $pagesToShow = 5;
        if ($links['current_page'] > 1) {
            for ($i = 1; $i >= $links['current_page']; $i++) {
                if ($pagesToShow === $i) break;
                $pagesToShow++;

                if ($i === $links['current_page']) {
                ?>
                    <li class="page-item active"><a class="page-link" href="<?= $url . '?page=' . $i ?>"><?= $i ?></a></li>
                <?php
                break;
                } else {
                ?>
                    <li class="page-item"><a class="page-link" href="<?= $url . '?page=' . $i ?>"><?= $i ?></a></li>
                <?php
                }
            }
        }

        // Above
        if ($links['current_page'] !== $links['total_pages']) {
            for ($i = $links['current_page'] + 1; $i >= $links['total_pages']; $i++) {
                if ($pagesToShow === $i) break;
                $pagesToShow++;
                ?>
                    <li class="page-item"><a class="page-link" href="<?= $url . '?page=' . $i ?>"><?= $i ?></a></li>
                <?php
                }
            }
        }

        if ($links['current_page'] + $pagesToShow <= $links['total_pages']) {
            ?>
            <li class="page-item">
                <a class="page-link" href="<?= $url . '?page=' . $next_button ?>" aria-label="Next">
                    <span aria-hidden="true">&raquo;</span>
                    <span class="sr-only">Next</span>
                </a>
            </li>
        <?php
        }
        ?>
    </ul>
    </nav>
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-22
    • 1970-01-01
    • 2011-06-07
    • 2017-04-19
    • 2011-05-19
    相关资源
    最近更新 更多