Přístup k neexistujícím datům – flash message a redirect nebo 404?
- fary
- Člen | 155
Mám menší dilema. Pokud uživatel mé aplikace přistoupí na adresu, example.com/articles/detail/125, tedy vytáhni článek s id 125, ale tento článek se v dB nenachází, jaký je nejvhodnější postup? Vyhodil flash message se zprávou ‚Tento článek neexistuje‘ a přesměřovat např. na example.com/articles/default a nebo vyhodit chybu 404 a zobrazit příslušnou stránku? Možná, že na frontendu je to jasné, 404, ale jak v administraci? Setkal jsem se s tím, že v administraci, kde chtěl administrátor např. editovat článek s id 125, tedy např. example.com/admin/articles/edit/125, byla zobrazena stránka 404. Mě ovšem příjde logičtější vyhodit flash zprávu kde bude stát: ‚Pokud o editaci neexistujícího článku‘ a redirect např. na example.com/admin/articles/default. Nejspíš je to jen věc názoru, ale jak toto vhodně řešit? V presenteru použít $this->flashMessage(‚…‘); $this->redirect(‚…‘); nebo $this->error(‚…‘, 404); ?
- Michal Vyšinský
- Člen | 608
Spíš než na uživatele bych se díval na to, co „zobrazíš“ vyhledávačům. Uživatel pochopí jako flash message, tak nějakou stránku s 404. Vyhledávač pochopí jen status kód 404. Takže logicky pokud něco není nalezeno, tak vracej 404 pomocí $this->error().
Co se týká administrace, tak v ní většinou nevracím 404, ale přesměruji na vytváření nové položky s flash message.
Na frontendu, tak kam může vlést vyhledávač, tak jednoznačně 404.
Editoval Michal Vyšinský (31. 7. 2014 20:39)
- David Kudera
- Člen | 455
Souhlas, jen osobně se mi spíš líbí přímo vyhození výjimky BadRequestException. Ale je to jedno, když error udělá to stejný.
Mám to asi kvůli tomu, že v IDE je to tučněji zvýrazněný a že mi IDE vygeneruje anotace, u kterých potom na první pohled vidím, že metoda vyhazuje BadRequestException, čili 404
Editoval David Kudera (31. 7. 2014 20:45)