Osetrenie vsetkych neplatnych URL
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- enumag
- Člen | 2118
Tohle je poněkud složitější otázka…
- Musíš zajistit že aplikace vždy zjistí zda url je špatná nebo ne, to lze v principu udělat buď vlastní implementací routeru (bude používat databázi) nebo vyhazováním výjimek BadRequestException v presenterech pokud se ti objekt v db nepodaří najít.
- Dále je nutné zajistit to přesměrování, to se samozřejmě dá dělat přímo v presenterech že místo vyhození BadRequestException zavoláš redirect. Toto řešení ale považuji za špatné, presenter by jen měl vyhodit výjimku a ne řešit ošetření. To řeším tak že používám několik různých potomků BadRequestException abych přesně věděl k jaké chybě došlo a podle typu výjimky to ošetřuji v ErrorPresenteru.
Musel jsem si kvůli tomu trochu upravit Application aby to bylo použitelné i v development režimu.
EDIT: V případě chybných oprávnění přesměrovávám na přihlašovací stránku a typicky přidám ještě flash message aby uživatel věděl co se stalo. V případě že stránka nebyla nalezena není přesměrování korektní a je lepší vrátit normální chybovou stránku s HTTP kódem 404.
Editoval enumag (9. 12. 2014 13:50)