Persitentní stránka v paginatoru

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

Zdravím,
dá se nějak nastavit persistentní paginator, abych při zobrazení stránky byl na stránce, na které jsem byl naposledy?

O co mi jde:
Přijdu na stránku A, odstránkuju ajaxově na stránku 5 a při příchodu na stránku A (z menu třeba) bych chtěl být na stránce 5.

Jak mám vytvořený komponenty:
presenter
– komponenta tabulky
---- komponenta paginatoru
------ persistentní parametr stránky

Zkoušel jsem různě měnit persistenci u paginatoru celého, různě pro celou komponentu paginatoru atd. ale nic se nepodařilo.

Díky za rady.

thm
Člen | 147
+
0
-

Udělal bych to pomocí session, nebo cookie. Rozšířil bych paginator, aby ještě ukládal session/cookie A = 5, B = 10 a podobně a při vstupu na stránku s by se paginator nejdříve podíval, jestli je nastavena hodnota – tou by se buď nastavil na číslo stránky, nebo uložil novou session/cookie.

CZechBoY
Člen | 3608
+
0
-

Ok, s tim jsem pocital kdyby to jinak neslo.

Felix
Nette Core | 1189
+
0
-

Tohle persistentni parametry neumi. Resp. mam ten pocit. Oni toho vlastne neumi ani tak moc (:-)) Jenom ti pridavaji do globalniho stavu promene, ktere si zvolis.

Mozna by jsis mohl upravit tohle ukladani/nacitani stavu.

ali
Člen | 342
+
0
-

Ja to resim tak, ze si ten persistentni parametr predavam jako dalsi parametr pro jinaci/dalsi presenter.. a pri navratu na puvodni presenter ho vlozim do redirectu..
Resit to pres session a cookie se mi nezamlouvalo..

CZechBoY
Člen | 3608
+
0
-

@ali Nee, ta komponenta je sice na více místech, ale já potřebuju vždy tu konkrétní komponentu zapersistovat.

@Felix jj, taky mě to napadlo, zkusím :-)

edit:
tak loadState/saveState už pracujou s persistentníma parametrama… kde bych tyhle metody měl upravit? https://api.nette.org/…ent.php.html#…

Editoval CZechBoY (17. 5. 2016 9:14)

Felix
Nette Core | 1189
+
0
-

Kdysi tu byl VisualPaginator od Davida. Ale ten tedka nemuzu najit.

Rekl bych, ze by jsi to mel upravit v dane komponente, prinejhorsim v presenteru.

Jako to ma tenhle doplnek:
https://github.com/…/Control.php#…

	public function loadState(array $params)
	{
		parent::loadState($params);
		$this->getPaginator()->page = $this->page;
	}

Tak to nejspis budes muset ukladat do session a pak si to tahat, bude to ale nejcistsi protoze o tom bude vedet jenom dana komponenta a zbytek aplikace bude netknutne fungovat dal.

Dej vedete, jak se to nakonec podarilo. Samotnyho me to zajima. Ale asi bych sel tou cestou loadState/saveState take.

CZechBoY
Člen | 3608
+
0
-

Nepodařilo se… v loadState (v paginator komponentě) přijde prázdný pole a loadState se volá dokonce dvakrát (se stejnými parametry) když měním stránku.

Felix
Nette Core | 1189
+
0
-

CZechBoY napsal(a):

Nepodařilo se… v loadState (v paginator komponentě) přijde prázdný pole a loadState se volá dokonce dvakrát (se stejnými parametry) když měním stránku.

A mas ten parameter page jako persistentni? Zkousel jsi koukat na globalStatehttps://api.nette.org/…esenter.html#…

CZechBoY
Člen | 3608
+
0
-

No v paginatoru je stránka jako veřejná persitentní proměnná. Nic víc persistentního nemám.
Co bych měl přidat? Komponentu tý tabulky v presenteru nebo stránkovadlo v tabulce jako persistentní?

Unlink
Člen | 298
+
0
-

CZechBoY napsal(a):

O co mi jde:
Přijdu na stránku A, odstránkuju **ajaxově **na stránku 5 a při příchodu na stránku A (z menu třeba) bych chtěl být na stránce 5.

Toto bude asi hlavý kameň úrazu.
Ajaxovo sa prerenderuje len tá tabuľka, ale link v menu už nie, takže tam sa tie persistetné parametre do URL nedostanú.

CZechBoY
Člen | 3608
+
0
-

No já ale chci normálně chodit po webu a potom se vrátit na stránku, kde jsem skončil. Nebo nějak nechápu asi tvoji poznámku…

Felix
Nette Core | 1189
+
0
-

CZechBoY napsal(a):

No já ale chci normálně chodit po webu a potom se vrátit na stránku, kde jsem skončil. Nebo nějak nechápu asi tvoji poznámku…

Jeste me napadlo, ze by jsi to mohl vyresit pres javascript (history).

Ohledne co kam pridat ti nepomuzu, musis to nejak vykoumat sam. Zkratka, aby kdyz se aktualizuje persistentni page ve strankovani, tak aby se to ulozilo do session. A kdyz prijdes na stranku, ktera nema page, tak se to nacte ze session a pripadne vymaze (aby se to porad nepresmerovavalo). Jestli v loadState/saveState nebo kde. To uz je na tobe. Ale urcite to pujde.

CZechBoY
Člen | 3608
+
0
-

@Felix no to jsem bral jako poslední možnou variantu bez možnosti fw… takhle už mám udělaný filtrovací formuláře

David Matějka
Moderator | 6445
+
0
-

bud ten persistentni parametr (resp persistentni komponenta) bude uz v base presenteru, aby se to prenaselo v url v ramci vsech presenteru (tzn kamkoliv prejdes, tak bude v url page=5) nebo to uloz do session. ale to mas nejaky specificky pripad? protoze tohle mi na webu neprijde jako ocekavane chovani :)

CZechBoY
Člen | 3608
+
0
-

Nechci mít na všech stránkách ve všech různých tabulkách stranu 5. Chci si jen uložit stav té jedné konkrétní komponenty na konkrétní stránce /abc.
Něco jako v gridech bývá zapamatování stavu pro konkrétní grid, akorát já bych chtěl ještě zapamatovat stránku.

robovarga
Člen | 4
+
+1
-

Ja by som potreboval taktiez nieco podobne…

ide o to ze mam tabulky napriec administraciu a mam tam spraveny ajaxovy paginator..
A ak som napriklad na 5 stranke a dam editovat polozku, tak po vrateni sa by som chcel byt opat na 5 strane…

podarilo sa mi to ak som parameter $page dal ako perzistentny do basepresentera..

Ale samozrejme sa mi ten parameter prenasal aj do ostatnych presenterov.. a ja by som potreboval aby bol perzistentny len v ramci jedneho presentera v jeho metodach a pri prechode do druheho presentera sa parameter $page vynuloval resp vymazal…

Slo by to nejako?