Strani rezultatov podatkovne zbirke
Pri razvoju spletnih aplikacij se pogosto srečate z zahtevo po izpisu omejenega števila zapisov na strani.
Iz tega stanja izstopimo, ko izpišemo vse podatke brez listanja. Za izbiro podatkov iz zbirke podatkov imamo razred
ArticleRepository, ki vsebuje konstruktor in metodo findPublishedArticles
, ki vrne vse objavljene članke,
razvrščene v padajočem vrstnem redu glede na datum objave.
V Presenter nato injiciramo razred model in v metodi render bomo zahtevali objavljene članke, ki jih posredujemo predlogi:
Predloga default.latte
bo nato poskrbela za seznam člankov:
Na ta način lahko izpišemo vse članke, vendar bo to povzročilo težave, ko bo število člankov naraslo. Takrat bo koristno uvesti mehanizem paginga.
Ta bo zagotovil, da bodo vsi članki razdeljeni na več strani, mi pa bomo prikazali le članke ene trenutne strani. Skupno število strani in razdelitev člankov izračuna Paginator sam, odvisno od tega, koliko člankov imamo skupaj in koliko člankov želimo prikazati na strani.
V prvem koraku bomo spremenili metodo za pridobivanje člankov v razredu repozitorija, da bo vrnila samo članke z ene strani. Dodali bomo tudi novo metodo za pridobitev skupnega števila člankov v zbirki podatkov, ki jo bomo potrebovali za nastavitev Paginatorja:
Naslednji korak je urejanje predstavnika. Številko trenutno prikazane strani bomo posredovali metodi render. V primeru, da ta številka ni del naslova URL, moramo privzeto vrednost nastaviti na prvo stran.
Metodo upodabljanja razširimo tudi na pridobitev primerka Paginatorja, njegovo nastavitev in izbiro pravilnih člankov za prikaz v predlogi. HomePresenter bo videti takole:
Predloga že iterira po člankih na eni strani, dodajte le povezave za paging:
To je način, kako smo s Paginatorjem dodali paginacijo. Če namesto Nette Database Core kot
plast podatkovne baze uporabimo Nette Database Explorer, lahko izvedemo
paging tudi brez Paginatorja. Razred Nette\Database\Table\Selection
vsebuje metodo page z logiko paginacije, ki je prevzeta
iz Paginatorja.
Skladišče bo videti takole:
Namesto tega bomo uporabili metodo predmeta Selection
, ki ga je vrnil repozitorij:
Ker ne uporabljamo Paginatorja, moramo urediti razdelek, ki prikazuje povezave za pomikanje:
Na ta način smo izvedli mehanizem za paging brez uporabe Paginatorja.