Persitentní stránka v paginatoru
- CZechBoY
- Člen | 3608
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
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
@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 | 1245
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.
- Felix
- Nette Core | 1245
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
globalState
? https://api.nette.org/…esenter.html#…
- Unlink
- Člen | 298
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ú.
- Felix
- Nette Core | 1245
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.
- David Matějka
- Moderator | 6445
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 :)
- robovarga
- Člen | 4
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?