Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yidas/php-pagination
PHP Paginator with Pager Widget (pure PHP, CI, Yii, Laravel support)
https://github.com/yidas/php-pagination
data-pagination linkpager pagination-widget paginator php php-pagination
Last synced: 2 months ago
JSON representation
PHP Paginator with Pager Widget (pure PHP, CI, Yii, Laravel support)
- Host: GitHub
- URL: https://github.com/yidas/php-pagination
- Owner: yidas
- License: mit
- Created: 2018-09-07T16:31:34.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-05-29T02:43:44.000Z (over 1 year ago)
- Last Synced: 2024-10-02T08:14:29.137Z (3 months ago)
- Topics: data-pagination, linkpager, pagination-widget, paginator, php, php-pagination
- Language: PHP
- Homepage:
- Size: 17.6 KB
- Stars: 25
- Watchers: 3
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
***php*** Pagination
===============PHP Paginator with Pager Widget (pure PHP, CI, Yii, Laravel support)
[![Latest Stable Version](https://poser.pugx.org/yidas/pagination/v/stable?format=flat-square)](https://packagist.org/packages/yidas/pagination)
[![License](https://poser.pugx.org/yidas/pagination/license?format=flat-square)](https://packagist.org/packages/yidas/pagination)Features
--------- *Compatible with pure PHP, Codeigniter, Yii & Laravel*
- ***SOLID principle** with Yii 2 pattern like*
- ***Pagination Widget** (View Block) included*
---
OUTLINE
-------- [Demonstration](#demonstration)
- [Requirements](#requirements)
- [PDO with pure PHP](#pdo-with-pure-php)
- [Codeiginter 3 Framework](#codeiginter-3-framework)
- [Widget Render](#widget-render)
- [Installation](#installation)
- [Codeigniter 3](#codeigniter-3)
- [Configuration](#configuration)
- [Inheritance](#inheritance)
- [Usage](#usage)
- [Widget](#widget)
- [Customized View](#customized-view)
- [Inheritance](#inheritance-1)
- [Build URL](#build-url)
- [API Documentation](#api-documentation)
- [Examples](#examples)
- [PDO with pure PHP](#pdo-with-pure-php-1)
- [Codeiginter 3 Framework](#codeiginter-3-framework-1)
- [References](#references)---
DEMONSTRATION
-------------### PDO with pure PHP
```php
// Get count of data set first
$sql = "SELECT count(*) FROM `table`";
$count = $conn->query($sql)->fetchColumn();// Initialize a Data Pagination with previous count number
$pagination = new \yidas\data\Pagination([
'totalCount' => $count,
]);// Get range data for the current page
$sql = "SELECT * FROM `table` LIMIT {$pagination->offset}, {$pagination->limit}";
$sth = $conn->prepare($sql);
$sth->execute();
$data = $sth->fetchAll();
```### Codeiginter 3 Framework
```php
$query = $this->db->where('type', 'C');// Clone same query for get total count
$countQuery = clone $query;// Get total count from cloned query
// Or you could use count_all_results('', false) to keep query instead of using `clone`
$count = $countQuery->count_all_results();// Initialize a Data Pagination with previous count number
$pagination = new \yidas\data\Pagination([
'totalCount' => $count,
]);// Get range data for the current page
$records = $query
->offset($pagination->offset)
->limit($pagination->limit)
->get()->result_array();
```### Widget Render
```php
=\yidas\widgets\Pagination::widget([
'pagination' => $pagination
])?>
```> `$pagination` is the object of `yidas\data\Pagination`.
---
REQUIREMENTS
------------
This library requires the following:- PHP 5.4.0+
---
INSTALLATION
------------Run Composer in your project:
composer require yidas/pagination
Then initialize it at the bootstrap of application such as config file:
```php
require __DIR__ . '/vendor/autoload.php';
```### Codeigniter 3
Run Composer in your Codeigniter project under the folder `\application`:
composer require yidas/pagination
Check Codeigniter `application/config/config.php`:```php
$config['composer_autoload'] = TRUE;
```
> You could customize the vendor path into `$config['composer_autoload']`---
CONFIGURATION
-------------The simple config and usage could refer to [Demonstration](#demonstration).
When you are dealing with pagination, you could new `yidas\data\Pagination` with configuration to get pager information for data query. For example:
```php
// Get total rows from your query
$count = $query->count();
// Initialize a Data Pagination
$pagination = new \yidas\data\Pagination([
'totalCount' => $count,
'pergpage' => 10,
]);
// ...use $pagination offset/limit info for your query
```For more parameters, you could refer to [API Documentation](#api-documentation).
### Inheritance
You could build your application data Pagination with styles Inherited from `yidas\data\Pagination`. For example:
```php
namespace yidas\data;use yidas\data\Pagination as BasePagination;
class Pagination extends BasePagination
{
// Name of the parameter storing the current page index
public $pageParam = 'page';
// The number of items per page
public $perPage = 10;
// Name of the parameter storing the page size
// false to turn off per-page input by client
public $perPageParam = false;
}
```---
USAGE
-----When there are too much data to be displayed on a single page, a common strategy is to display them in multiple pages and on each page only display a small portion of the data. This strategy is known as *pagination*.
This library uses a `yidas\data\Pagination` object to represent the information about a pagination scheme. In particular,
- `total count` specifies the total number of data items. Note that this is usually much more than the number of data items needed to display on a single page.
- `page size` specifies how many data items each page contains. The default value is 20.
- `current page` gives the current page number (not zero-based). The default value is 1, meaning the first page.With a fully specified `yidas\data\Pagination object`, you can retrieve and display data partially. For example, if you are fetching data from a database, you can specify the `OFFSET` and `LIMIT` clause of the DB query with the corresponding values provided by the pagination. Below is an example:
```php
/**
* Yii 2 Framework sample code
*/
use yidas\data\Pagination;// build a DB query to get all articles with status = 1
$query = Article::find()->where(['status' => 1]);// get the total number of articles (but do not fetch the article data yet)
$count = $query->count();// create a pagination object with the total count
$pagination = new Pagination(['totalCount' => $count]);// limit the query using the pagination and retrieve the articles
$articles = $query->offset($pagination->offset)
->limit($pagination->limit)
->all();
```### Widget
To facilitate building the UI element that supports pagination, This library provides the `yii\widgets\Pagination` widget that displays a list of page buttons upon which users can click to indicate which page of data should be displayed. The widget takes a pagination object so that it knows what is the current page and how many page buttons should be displayed. For example,
```php
use yidas\widgets\Pagination;echo Pagination::widget([
'pagination' => $pagination
]);
```
> `$pagination` is a `yidas\data\Pagination` object for data provider.#### Customized View
The default widget view is for Bootstrap(`bootstrap`), you could choose a template view for your Pagination Widget:
```php
echo \yidas\widgets\Pagination::widget([
'pagination' => $pagination,
'view' => 'simple',
]);
```|Template |Description|
|:--------|:----------|
|bootstrap|Default view, supports for Bootstrap 3 and 4|
|simple |Simple `