stránkování pomocí paginátoru
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Karel Chramosil
- Člen | 114
Nette Framework 2.0.3 (revision eb558ae released on 2012–04–04), EasyPHP
5.3.9
Dobrý den, jsem už starší a pomalu chápu. Potřebuji stránkovat výpis
z databáze. V návodu jsem našel paginátor a zadal do svého kódu:
<?php
use Nette\Security as NS;
/**
* UserList presenter.
*
* @author Karel Chramosil
* @package Opravy
* Presenter, který zajišťuje výpis seznamu oprav.
*/
class OpravaListPresenter extends SecuredPresenter
{
public function actionDefault()
{
}
public function renderDefault()
{
$paginator = new Nette\Utils\Paginator;
$paginator->setItemCount(356); // celkový počet položek (např. článků)
$paginator->setItemsPerPage(8); // počet položek na stránce
$paginator->setPage(1); // číslo aktuální stránky, číslováno od 1
$this->template->opravas = $this->context->createOpravas()->order('datum_opravy DESC, id DESC')->limit($paginator->getLength(), $paginator->getOffset());
/*
if ($paginator->first) echo('První stránka'); // jsme na první stránce?
if ($paginator->last) echo('Poslední stránka'); // jsme na poslední stránce?
echo $paginator->page; // číslo aktuální stránky
*/
}
public function beforeRender()
{
}
}
Výsledkem je zobrazení prvních 8 řádků. Ale nezobrazí se možnost stránkování.
Do šablony jsem přidal {control paginator} program ale hlásí že nezná paginátor. Nevím kde ho deklarovat. Děkuji za nakopnutí.
- Draffix
- Člen | 146
Použil bych spíše visual paginator. Pak stačí Váš kód mírně upravit a musíte si vytvořit ještě továrničku:
protected function createComponentPaginator() {
$visualPaginator = new VisualPaginator();
return $visualPaginator;
}