Paginator

Potrebujete stran za seznam podatkov? Ker je matematika v ozadju paginacije lahko zapletena, vam bo pomagal Nette\Utils\Paginator.

Namestitev:

composer require nette/utils

Ustvarimo objekt za paging in mu določimo osnovne informacije:

$paginator = new Nette\Utils\Paginator;
$paginator->setPage(1); // številka trenutne strani (oštevilčena od 1).
$paginator->setItemsPerPage(30); // število zapisov na strani
$paginator->setItemCount(356); // skupno število zapisov (če je na voljo)

Stranke so oštevilčene od 1. To lahko spremenimo z uporabo setBase():

$paginator->setBase(0); // oštevilčeni od 0

Predmet bo zdaj vseboval vse osnovne informacije, ki so uporabne pri ustvarjanju paginatorja. Lahko ga na primer posredujete predlogi in ga tam uporabite.

$paginator->isFirst(); // je to prva stran?
$paginator->isLast(); // je to zadnja stran?
$paginator->getPage(); // številka trenutne strani
$paginator->getFirstPage(); // številka prve strani
$paginator->getLastPage(); // številka zadnje strani
$paginator->getFirstItemOnPage(); // zaporedna številka prvega elementa na strani
$paginator->getLastItemOnPage(); // zaporedna številka zadnjega elementa na strani
$paginator->getPageIndex(); // tekoča številka strani, če je oštevilčena od 0
$paginator->getPageCount(); // skupno število strani
$paginator->getItemsPerPage(); // število zapisov na stran
$paginator->getItemCount(); // skupno število zapisov (če je na voljo)

Paginator bo pomagal pri oblikovanju poizvedbe SQL. Metodi getLength() in getOffset() vrneta vrednosti, ki jih lahko uporabite v stavkih LIMIT in OFFSET:

$result = $database->query(
	'SELECT * FROM items LIMIT ? OFFSET ?',
	$paginator->getLength(),
	$paginator->getOffset(),
);

Če želite paginirati v obratnem vrstnem redu, tj. stran št. 1 ustreza najvišjemu odmiku, lahko uporabite getCountdownOffset():

$result = $database->query(
	'SELECT * FROM items LIMIT ? OFFSET ?',
	$paginator->getLength(),
	$paginator->getCountdownOffset(),
);

Primer uporabe v aplikaciji je na voljo v kuharski knjigi Paginating Database Results.

različica: 4.0