Autor wpisu: Athlan, dodany: 04.01.2009 19:03, tagi: php
Zaczynając swoją przygodę z PHP nie miałem pojęcia jak wykonać paginację newsów, która załamywałaby łańcuchy liczb w momencie, w których chce. Na dzień dzisiejszy postanowiłem napisać swój nowy pager, gdyż ten, który dotychczas używałem przez ostatnie 2 lata nie odpowiadał mi pod trzema względami:
- nagromadzenie metod, tj. setLimit(), getLimit(), zamiast pojedynczego limit(),
- brak możliwości ustawienia załamywania się łańcucha (domyślnie były to 2 liczby):
1, 2 ... 6, 7, 8 ... 12, 13
. - brak możliwości definiowania limitu, ilości elementów oraz aktualnie przeglądanej strony w jednej metodzie, najchętniej w samym konstruktorze.
Ostatnio potrzebowałem zwiększyć limit liczb “z przodu” i “tyłu” oraz “w środku”:
1, 2, 3 ... 5, 6, 7, 8, 9 ... 11, 12, 13
Dla tych, którzy ciągle szukają komponentu obsługującego paginację prezentuję Vframe_Pagination.
Implementacja od strony kontrolera (metoda krótka):
$oPager = new Vframe_Pagination($iItemsCount, $iLimit, $iCurrentPage);
Metoda długa:
$oPager = new Vframe_Pagination();
$oPager->limit($iLimit);
$oPager->items($iItemsCount);
$oPager->page($iPage);
Metody limit, items oraz page zwracają liczby odpowiadające ich nazwą niezależnie od tego, czy została podana nowa wartość w argumencie, czy nie, co jest absolutnie wygodnym (dla mnie) rozwiązaniem.
Aby wyświetlić oczekiwane rekordy, wykorzystujemy pagera:
$aData = $oModel->GetList($iUser, $oPager->start(), $oPager->limit());