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.
Yii uses a yii\data\Pagination object to represent the information about a pagination scheme. In particular,
With a fully specified yii\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,
use yii\data\Pagination;
$query = Article::find()->where(['status' => 1]);
$count = $query->count();
$pagination = new Pagination(['totalCount' => $count]);
$articles = $query->offset($pagination->offset)
->limit($pagination->limit)
->all();
Which page of articles will be returned in the above example? It depends on whether a query parameter named page
is given. By default, the pagination will attempt to set the current page to be the value of the page
parameter. If the parameter is not provided, then it will default to 0.
To facilitate building the UI element that supports pagination, Yii provides the yii\widgets\LinkPager 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,
use yii\widgets\LinkPager;
echo LinkPager::widget([
'pagination' => $pagination,
]);
If you want to build UI element manually, you may use yii\data\Pagination::createUrl() to create URLs that would lead to different pages. The method requires a page parameter and will create a properly formatted URL containing the page parameter. For example,
$pagination->route = 'article/index';
echo $pagination->createUrl(100);
echo $pagination->createUrl(101);
Tip: You can customize the name of the
page
query parameter by configuring the pageParam property when creating the pagination object.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4