Database\Table\Selection a funkce page

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

v HomePresenteru mám

	private $recordFacade;

	function __construct(Model\RecordFacade $recordFacade)
	{
		$this->recordFacade = $recordFacade;
	}

	public function renderDefault($page = 1)
	{
		$this->template->records = $this->recordFacade->getAll()->page($page, 4);
		$this->template->page = $page;
	}

v šabloně pak

	<a n:href="default $page - 1" n:if="$page > 1">starší</a>
	<a n:href="default $page + 1" >novější</a>

jak omezím zobrazení poslední stránky ? Zobrazují se mi totiž neustále novější stránky i s prázdným obsahem

David Matějka
Moderator | 6445
+
0
-

kratce: musis si spocitat, kolik je tam celkem zaznamu

V selection ta fce page je hodne primitivni, mrkni na Nette\Utils\Paginator, ktery ti treba pomuze
Pro zobrazeni paginatoru muzes pouzit visual paginator (mozna neni zcela kompatibilni se soucasnym nette, ale asi bude jen stacit doplnit importy)..

Zaznamy spocitas pomoci

$selection->count('*');

Editoval matej21 (27. 12. 2013 21:31)

mardon
Člen | 59
+
0
-

matej21 napsal(a):

kratce: musis si spocitat, kolik je tam celkem zaznamu

V selection ta fce page je hodne primitivni, mrkni na Nette\Utils\Paginator, ktery ti treba pomuze
Pro zobrazeni paginatoru muzes pouzit visual paginator (mozna neni zcela kompatibilni se soucasnym nette, ale asi bude jen stacit doplnit importy)..

Zaznamy spocitas pomoci

$selection->count('*');

takze

$selection->count('*');

mám předat jako třetí parametr pro page?

O visualpaginatoru jsem uvažovala, ale vzhledem že celá aplikace je hrozně jednoduchá doufala jsem, že půjde realizovat standartními částmi Nette

David Grudl
Nette Core | 8233
+
0
-

Metoda page() vrací ve třetím parametru počet stránek. V nette 2.1.

mardon
Člen | 59
+
0
-

David Grudl napsal(a):

Metoda page() vrací ve třetím parametru počet stránek. V nette 2.1.

Děkuji za nasměrování, upravila jsem si to takto:

	public function renderDefault($page = 1)
	{
		$this->template->records = $this->recordFacade->getAll()->page($page, 4, $numpages);
		$this->template->page = $page;
		$this->template->numpages = $numpages;
	}

šablona

	<a n:href="default $page - 1" n:if="$page > 1">starší</a>
	<a n:href="default $page + 1" n:if="$page < $numpages">novější</a>

takže mi to již částečně funguje jen bych potřebovala ještě ošetřit omezení pokud zadám přímo do adresního řádku prohlížeče na konci v url ?page=20 kde číslo stránky je větší než počet stránek

David Matějka
Moderator | 6445
+
0
-

na to bych se bud vykaslal, nebo tam jen hodit redirect na posledni stranku

David Grudl
Nette Core | 8233
+
0
-

If ($page < 1 || $page > $numpages) $this->error();

mardon
Člen | 59
+
0
-

David Grudl napsal(a):

If ($page < 1 || $page > $numpages) $this->error();

díky nějak tak jsem to zamýšlela, ale ještě jsem se k tomu nedostala. Díky za trpělivost.