Pomoc s VisualPaginatorem
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Grelek
- Člen | 233
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
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
…
- uestla
- Backer | 799
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');
}