Edit

Stránkování

Při tvorbě webových aplikací se velmi často setkáte s požadavkem na omezení počtu vypsaných položek na stránce. Protože stránkovací matematika umí být zrádná, pomůže vám Nette\Utils\Paginator.

Vytvoříme si objekt stránkovače, kterému nastavíme počet položek zobrazených na stránce, číslo aktuální stránky a celkový počet položek, je-li znám.

$paginator = new Nette\Utils\Paginator;
$paginator->setItemCount(356); // celkový počet položek (např. článků)
$paginator->setItemsPerPage(30); // počet položek na stránce
$paginator->setPage(1); // číslo aktuální stránky, číslováno od 1

Tento objekt si můžeme vložit třeba do šablony a pak už se jen srozumitelně ptát

if ($paginator->first) ... // jsme na první stránce?
if ($paginator->last) ... // jsme na poslední stránce?
echo $paginator->page; // číslo aktuální stránky

Stránkovač využijeme při formulování SQL dotazu. Metody getLength() a getOffset() vrací hodnoty používané v klauzulích LIMIT a OFFSET.

$result = $database->table('products')
    ->limit($paginator->getLength(), $paginator->getOffset());

Pokud potřebujeme stránkovat v opačném pořadí, tj. stránka č. 1 odpovídá nejvyššímu offsetu, nahradíme metodu getOffset() za getCountdownOffset().

Nette Tracy Latte Tester Sign in Sign up English version