Stránkování dat - Jet\Data_Paginator
Třída pomáhá řešit klasický (a mnohdy "oblíbený") problém se stránkováním seznamu položek. Pozor aby nedošlo k nedorozumění. Třída vůbec neřeší vykreslování UI. Pro snadnou implementaci celého rozhraní práce se seznamem včetně filtrů má Jet jinou sadu tříd stejně tak jako pro vykreslení seznamu samotného. Tato třída řeší model - tedy logiku a algoritmus stránkování dat.
Stránkovat je možné jak seznam v běžném poli, tak instanci nějakého iterátoru, který musí implementovat třídu Jet\Data_Paginator_DataSource.
Stránkovač počítá s tím, že údaje o počtu položek na stránku a také o aktuálním čísle stránky dostane na vstupu - přímo jako parametry konstruktoru. To znamená, že třída se ani nestará o zachycení vstupu (například části URL, GET parametru a podobně). To je v kompetenci vašeho kontroleru. Třída tedy opravdu řeší "pouze" příslušný algoritmus stránkování a díky tomu je naprosto univerzální, všestranně použitelná a velice užitečná.
Přehled metod
Metoda | Význam |
---|---|
public __construct( int $current_page_no, int $items_per_page, callable $URL_creator ) |
Již při vytvoření instance musí být stránkovač správně inicializován. Pojďme si rozebrat parametry:
|
public setURLCreator( callable $URL_creator ) : void |
Pokud by to bylo nutné, tak je možné generátor / vytvářeč (viz konstruktor třídy) vyměnit i po vytvoření instance třídy. |
public setData( array|Data_Paginator_DataSource $data ) : void |
Metoda slouží k předání dat, která jsou určena ke stránkování - tedy celého seznamu. Může jít o prosté pol, ale i datový zdroj. Tedy instanci třídy implementující potřebné rozhraní. V praxi je častější druhá možnost a například DataModel se spoluprací se stránkovačem přímo podporuje. |
public setDataSource( Data_Paginator_DataSource $data ) : void |
Viz metoda setData. Metoda setDataSource má ten rozdíl, že neakceptuje prosté pole, ale pouze instanci iterátoru. |
public getData( ) : iterable |
Vrátí výsledek. Tedy:
|
public getDataItemsCount( ) : int |
Vrátí celkový počet záznamů v původním seznamu položek. |
public getPagesCount( ) : int |
Vrátí počet stránek. |
public getCurrentPageNo( ) : int |
Vrátí aktuální číslo stránky. |
public getPrevPageNo( ) : int|null |
Vrátí číslo předchozí stránku. Pokud žádná předchozí stránka není (aktuální je první), pak vrací null. |
public getNextPageNo( ) : int|null |
Vrátí číslo následující stránky. Pokud žádná následující stránka není (aktuální je poslední), pak vrátí null. |
public getDataIndexStart( ) : int |
Vrátí počáteční index dat aktuální stránky - ve smyslu práce s polem. |
public getDataIndexEnd( ) : int |
Vrátí konečný index dat aktuální stránky - ve smyslu práce s polem. |
public getShowFrom( ) : int |
Vrátí údaj určený pro uživatele: Zobrazena položka od: X (vrátí hodnotu X) |
public getShowTo( ) : int |
Vrátí údaj určený pro uživatele: Zobrazena položka do: X (vrátí hodnotu X) |
public getCurrentPageNoIsInRange( ) : bool |
Indikuje zda je předané platné číslo stráneky v rozsahu. Může se stát, že bylo předáno číslo stránky 11, ale stránek je reálně pouze 10. V takovém případě metoda vrátí false, jinak true. |
public getPrevPageURL( ) : null|string |
Vrátí URL předchozí stránku. Pokud žádná předchozí stránka není (aktuální je první), pak vrací null. |
public getNextPageURL( ) : null|string |
Vrátí URL následující stránky. Pokud žádná následující stránka není (aktuální je poslední), pak vrátí null. |
public getLastPageURL( ) : null|string |
Vrátí URL poslední stránky. |
public getFirstPageURL( ) : null|string |
Vrátí URL první stránky. |
public getPagesURL( ) : array |
Vrátí URL všech stránek. |
public toJSON( ) : string |
Převede informace o stránkování do formátu JSON. |
public jsonSerialize( ) : array |
Instanci stránkovače je možné předat funkci json_encode. |