Stránkování

Nová databázová vrstva umí velmi pěkné features. Jednou z nich je stránkování. Nejdříve si připravíme klasický dotaz do db:

$query = Db::prepare('select * from [posts] where [category_id] = %i', 5);

Nyní zbývá už jen na výsledek použít metodu setPagination(), která má tři parametry:

  1. $page – číslo (pořadí) stránky, kterou chcete zobrazit; počítáno od jedné
  2. $limit – nepovinný; počet záznamů na stránku
  3. $count – nepovinný; celkový počet záznamů

Háefko framework se vždy snaží upravit původní SQL dotaz tak, aby dokázalo zjistit celkový počet položek. Bohužel, někdy je SQL dotaz natolik komplikovaný, že musíte pomocí toho parametru předat sami počet položek.

$query = Db::prepare('select * from [posts] where [category_id] = %i', 5);
$query->setPagination($page);
# a spustime
$query->execute();

Nyní můžeme náš query dotaz jednoduše projít:

foreach ($query as $row) {
    # ...
}

Stránkovač

Do výsledného objektu nám přibyla také jedna nová proměnná – paginator. Na ní můžeme volat metody, pomocí kterých zjistíme, zda existuje předchozí stránka, či následující, kolik je stránek celkem, a na které stránce se nacházíme.

$query->paginator->page;
$query->paginator->pages;
$qeury->paginator->hasNext();
$qeury->paginator->hasPrev();
$query->paginator->isFirst();
$query->paginator->isLast();

Metody hasPrev() a hasNext() vrací logickou hodnotu – true, pokud existuje předchozí/nás­ledující stránky. Dále jsou zde metody isFirst() a isLast(), pomocí nichž lze zjistit, zda je akutální stránka první, respektive poslední.

Automatický render

Pokud chcete vykreslit pěkný stránkovač, můžete k tomu použít HTML helper a jeho metodu paginator.

echo $html->paginator($query->paginator);