VisualPaginator – vyšší stránka než je možná má házet 404

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

Řešíte nějak u VisualPaginatoru, že pokud je maximální počet stránek třeba 10 a někdo přepíše v adresním rářku na 100, tak aby to neukazovalo poslední stránku, ale vyhodilo 404?

Vzhledem k tomu, že paginator se o tom, kolik je prvků a jaké má stránky dozví v presenteru v action, tak na posledním řádku kontroluji, zda sedí persistentní parametr visualPaginatoru a ->getPage z Nette Paginatoru. Ale přeci jen nechce se mi na to pořád pamatovat. Jde to nějak řešit přímo v komponentě? Dát to do attached je moc brzo, v render je to pozdě…

vitkutny
Člen | 73
+
0
-

Taky to řeším, ale 404 nevyhazuji. Jelikož záznamy na stránce můžou i ubývat a při přístupu na X tou stránku která předtím existovala namísto 404 přesměruji na existující stránku

parametr zvaliduji (případně přepíši) v metodě saveState a loadState komponenty/presenteru
https://github.com/…/Control.php#… (v tomhle konkrétním případě se vše děje v Nette\Utils\Paginator::set/getPage)

o přesměrování se následně postará kanonizace v Presenteru
https://github.com/…resenter.php#…

Editoval vitkutny (13. 4. 2016 23:15)

Jiří Nápravník
Člen | 710
+
0
-

Díky za tip. LoadState jsem tam měl, saveState ne, a ten to řeší. Jenom ještě jedna věc, šlo by to nějak ošetřit, aby to fungovalo i pokud naplním ten paginator v render metodě v presenteru? Já totiž primárně používám renderMetody, actionMetody jen vyjimecne