VisualPaginator se nechce vykreslit
- weckho
- Člen | 94
Ahoj,
nechce se mi v šabloně vykreslit VisualPaginator, v presentru mám:
public function renderDefault()
{
$data = new Data;
$dataSource = $data->findAll()->orderBy('date', 'ASC');
$vp = $this->getComponent('paginator')->paginator;
$vp->itemsPerPage = 3; //nastavíme zobrazení tří položek na stránku
$vp->itemCount = count($dataSource); //řekneme paginátoru kolik máme celkem položek
$dataSource->offset($vp->offset);
$dataSource->limit($vp->itemsPerPage);
$this->template->data = $dataSource->fetchAll();
}
protected function createComponent($name)
{
switch ($name) {
case 'addForm':
//Nějaký form.
return $form;
case 'paginator':
$vp = new VisualPaginator($this, $name);
return $vp;
default:
parent::createComponent($name);
}
}
V šabloně potom:
{control paginator}
Data se vykreslí (dle zadaného limitu), ale stránkování ne. Pokud do URL přidám ?page=2, dostanu stejná data jako bez tohoto parametru.
Děkuji.
- David Grudl
- Nette Core | 8227
Zeptám se na něco jiného ;) Snažil jsem se už dávno na fóru a webů důsledně zlikvidovat zmínky o továrničkách řešených přes switch. Kde na to pořád chodíte?
- Patrik Votoček
- Člen | 2221
David Grudl napsal(a):
Zeptám se na něco jiného ;) Snažil jsem se už dávno na fóru a webů důsledně zlikvidovat zmínky o továrničkách řešených přes switch. Kde na to pořád chodíte?
Mám takové tušení že to berou z example DataGridu
- Ondřej Mirtes
- Člen | 1536
Měla by fungovat i první varianta.
Nevoláš na něj ten count až po applyLimit? :)) Zkus si dumpnout fetchAll().
Editoval Ondřej Mirtes (5. 2. 2010 20:23)
- weckho
- Člen | 94
Nevolám, respektive nevolám applyLimit vůbec, protože používám dibiFluent, takže jen limit, kód je takový:
$data = new Data;
$dataSource = $data->findAll()->orderBy('date', 'ASC');
$vp = $this->getComponent('paginator')->paginator;
$vp->itemsPerPage = 3; //nastavíme zobrazení tří položek na stránku
$vp->itemCount = count($dataSource); //řekneme paginátoru kolik máme celkem položek
$dataSource->offset($vp->offset);
$dataSource->limit($vp->itemsPerPage);
$this->template->data = $dataSource->fetchAll();
Záznamy se mi normálně vypíšou všechny.. mám fetchAll až na konci a count volám předtím (i před tím limitem), takže ty záznamy v $dataSource normálně jsou.
Děkuji.
- Ondřej Mirtes
- Člen | 1536
Tak proč nazýváš proměnnou $dataSource, když to není DataSource?
Nejsem si jistý, jestli se dá na objekt DibiFluent volat count(), aby vrátil počet položek, ale to už bych kecal, nikdy jsem DibiFluent nepoužíval.
- Honza Marek
- Člen | 1664
David Grudl napsal(a):
Zeptám se na něco jiného ;) Snažil jsem se už dávno na fóru a webů důsledně zlikvidovat zmínky o továrničkách řešených přes switch. Kde na to pořád chodíte?
U toho paginatoru bych se tomu vůbec nedivil. Chtěl jsem to opravit, ale nemám oprávnění editovat stránku.