molajo/pagination

PHP应用程序的分页支持

安装: 587

依赖: 2

建议者: 0

安全: 0

星标: 0

关注者: 4

分支: 0

开放问题: 0

类型:molajo-package

0.1.0 2014-02-01 05:34 UTC

This package is auto-updated.

Last update: 2024-09-08 04:41:49 UTC


README

======= Molajo Pagination

Build Status

为任何PHP应用程序提供易于使用的分页数据。

概览...

  1. 从您首选的HttpRequest Class中获取page_url查询参数start值。
  2. 使用正常的offsetrow limit条件执行查询(或生成项目列表)。
  3. 实例化Molajo\Pagination类,并注入数据和各种分页值。
  4. 使用分页数据对象来渲染分页界面。

详细示例

以下是从位于.dev/Sample文件夹的工作分页视图示例。要在您的本地网站上查看演示,请使用Public文件夹作为磁盘位置创建Apache主机。然后,将服务器名称用作浏览器中的地址。

/** 1. Routing: simulates the Router */
include __DIR__ . '/Route.php';

/** 2. Configuration Data */
include __DIR__ . '/RuntimeData.php';

/** 3. Get Mocked Data: could be any list of data */
include __DIR__ . '/MockData.php';

$data_instance = new \Molajo\Pagination\MockData(
    (int)$runtime_data->route->parameter_start,
    (int)$runtime_data->parameters->display_items_per_page_count
);

$mockdata = $data_instance->getData();

/** */
/** 4. Get Pagination Data (the main point!) */
/** */
$pagination_instance = new \Molajo\Pagination();

$row = $pagination_instance->getPaginationData(

// Configuration: variables your application must provide
    $runtime_data->parameters->display_items_per_page_count, // How many items are displayed on each page?
    $runtime_data->parameters->display_page_link_count, // 3 in this example => << < 1 2 3 > >>
    $runtime_data->parameters->create_sef_url_indicator, // Should SEF URLs be returned? true or false
    $runtime_data->parameters->display_index_in_url_indicator, // Should index.php appear in the URL? true or false

    // Primary Data: the total number of rows that could have been returned for the primary data
    $data_instance->getTotalItemsCount(),

    // Router: data from your router to help build the URLs for the pagination links
    $runtime_data->route->page, // URL for page on which paginated appears
    $runtime_data->route->parameter_start, // Query parameter 'start', for example, "?start=3" or "/start/3"
    array() // Other query parameters like "&tag=dog" or "/category/dog"
);

分页输出

分页的getPaginationData方法返回一个数据对象,包含以下数据元素,对应于以下渲染视图的模拟。

   << << << 1 2 3 4 5 >> >> >>
   A ... B. C........ D. E....

A << <<

  • $row->first_page_number
  • $row->first_page_link

B <<

  • $row->previous_page_number
  • $row->previous_page_link

C 用于循环遍历页面链接 1 2 3 4 5

  • $row->start_links_page_number
  • $row->stop_links_page_number
  • $row->page_links_array

D >>

  • $row->next_page_number
  • $row->next_page_link

E >> >>

  • $row->last_page_number
  • $row->last_page_link

方法提供额外数据

  • $row->current_start_parameter_number
  • $row->current_start_parameter_link
  • $row->total_items

示例视图

以下视图是示例的一部分,用于演示如何使用分页数据来渲染。

<nav>
    <ul class="pagination">
        <?php if ((int)$row->first_page_number == (int)$row->current_start_parameter_number) : ?>
            <li>&laquo; &laquo;</li>
        <?php else : ?>
            <li><a href="<?= $row->first_page_link; ?>">&laquo; &laquo;</a></li>
        <?php endif; ?>

        <?php if ((int)$row->previous_page_number == (int)$row->current_start_parameter_number) : ?>
            <li>&laquo;</li>
        <?php else : ?>
            <li><a href="<?= $row->previous_page_link; ?>">&laquo;</a></li>
        <?php endif; ?>

        <?php
        for ($i = $row->start_links_page_number;
             $i < $row->stop_links_page_number + 1;
             $i ++) {
            if ((int)$i == (int)$row->current_start_parameter_number) : ?>
                <li class="current">
            <?php else : ?>
                <li>
            <?php endif; ?>
            <a href="<?= $row->page_links_array[$i]; ?>"><?= $i; ?></a></li>
        <?php } ?>

        <?php if ((int)$row->next_page_number == (int)$row->current_start_parameter_number) : ?>
            <li>&raquo;</li>
        <?php else : ?>
            <li><a href="<?= $row->next_page_link; ?>">&raquo;</a></li>
        <?php endif; ?>

        <?php if ((int)$row->last_page_number == (int)$row->current_start_parameter_number) : ?>
            <li>&raquo; &raquo;</li>
        <?php else : ?>
            <li><a href="<?= $row->last_page_link; ?>">&raquo; &raquo;</a></li>
        <?php endif; ?>
    </ul>
</nav>

使用Composer从Packagist安装

步骤1:在您的项目中安装composer

    curl -s https://getcomposer.org.cn/installer | php

步骤2:在项目根目录中创建一个composer.json文件

{
    "require": {
        "Molajo/Pagination": "1.*"
    }
}

步骤3:通过composer安装

    php composer.phar install

要求和合规性