Pomoc s VisualPaginatorem

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

Zdravím,

podařilo se mi zprovoznit VisualPaginator, dokonce se i vykreslil, ale obsah se nevykresloval v závislosti na tom, na jaké stránce jsem byl. Níže jsou zdrojové kódy, ke kterým bych prosil vysvětlit, co musím kam napsat, abych správně zprovoznil VisualPaginator. Zdrojáky budou čisté, bez jakékoliv implementace VisualPaginatoru.

Model:

public function getBlogPosts()
{
    return $this->db->table('blogposts');
}

Presenter:

public function renderDefault()
{
    $this->template->blogPosts = $this->blogFacade->getBlogPosts()->order('id DESC');
}

VisualPaginator mám v app/components/VisualPaginator/VisualPaginator.php.

uestla
Backer | 799
+
0
-

Je třeba ta vykreslovaná data právě „oříznout“ v závislosti na stavu paginátoru, nejlépe takto:

function renderDefault()
{
	$paginator = $this['visualPaginator']->paginator;
	$this->template->blogPosts = $this->blogFacade->getBlogPosts()
		->limit($paginator->length, $paginator->offset)
		->order('id DESC');
}

Za předpokladu, že továrničku na VisualPaginator máš pojmenovanou createComponentVisualPaginator

Grelek
Člen | 233
+
0
-

Tak jsem to udělal přesně podle vás.

Bohužel, v šabloně se mi nevykreslí {control visualPaginator} a příspěvky se omezí na 1.

Továrnička vypadá takhle:

public function createComponentVisualPaginator()
{
    return new \VisualPaginator();
}
uestla
Backer | 799
+
0
-

Samozřejmě je potřeba nastavit, kolik příspěvků se zobrazí na 1 stránku a kolik je jich celkem:

protected function createComponentVisualPaginator()
{
	$vp = new \VisualPaginator;
	$vp->paginator->setItemsPerPage( 20 );
	return $vp;
}



function renderDefault()
{
	$this->template->blogPosts = $this->blogFacade->getBlogPosts();

	$paginator = $this['visualPaginator']->paginator;
	$paginator->setItemCount( $this->template->blogPosts->count('*') );

	$this->template->blogPosts
		->limit($paginator->length, $paginator->offset)
		->order('id DESC');
}