visual paginator v komponentě

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
kleinpetr
Člen | 480
+
0
-

Ahoj,

snažím se rozchodit jednoduchý paginator, ale mám s tím trošku problém..

mám komponentu VisualPaginator od Davida, kterou vytvářím ve vlastní komponentě.

class MyControl extends UI\Control
{

public function render(){
	$paginator = $this['visualPaginator']->paginator;
	$paginator->setItemCount(20);
	$paginator->setItemsPerPage(10);

	//nyní kliknu na page 2

	dump($paginator);
	//zde vidím, že v private proměnné je číslo 2

	dump($paginator->page);
	//zde je ale číslo 1

	dump($paginator->getLastPage);
	//taktéž číslo 1

	dump($this['visualPaginator']->page);
	//číslo 2
}

protected function createComponentVisualPaginator(){
	$paginator = new VisualPaginator();
	return $paginator;
}

}

Vůbec nechápu proč.. a ikdyž se snažím vytáhnout length a offset tak offset je vždy 0 a length 10. Předem díky za pomoc.

kleinpetr
Člen | 480
+
0
-

Tak po delším přemýšlení, mi došlo že asi název VISUAL mluví za vše :D takže to má jen vykreslit paginator, funkčnost je pak už asi na mě :) nicméně nechápu proč tedy používá ta komponenta Utils\Paginator jen kvůli tomu aby nastavil itemCounts a perPageItems ? to mi přijde zbytečný.

gliny
Člen | 25
+
0
-

No ta komponenta ti hlavně vykreslí graficky ten stránkovač, ty mu z něj nastavíč limit a offset tomu tvému sql dotazu který chceš stránkovat.

kleinpetr
Člen | 480
+
0
-

Jde o to, že mi ten paginator neudžuje limit a offset.. jen page, ale to jen díky tomu, že jsem teď zjistil takovou novinku.

Ta komponenta visualPaginator ma členskou proměnnou $page a v metodě loadState() se tato proměnná předá tomu Paginatoru. A já bych se chtěl zeptat jak vlastně pracuje ta metoda loadState() a k čemu je. Snažil jsem se totiž brát ?page z presenteru přes attached() ale pravděpodobně se metoda loadState() volá dřív, tudíž ji člesnkou proměnnou ve visualPaginatoru přepisuju moc pozdě, když už je dávno předána do Paginatoru.

Díky za vysvětlení :)