Odchytnuti vyjimky 404 a presmerovani

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

Chtel bych se zeptat zda se da nejak jednoduse jen odchytnout vyjimka 404 a pote presmerovat na urcitou adresu, ktera je uz v systemu (ne primo na nakej pohled). Jde o to ze predavam url ve formatu domena.cz/url.html coz se kontroluje v DB, pokud mi db nevrati hodnoty tak presmerovavam na 404.html. Ale nastava problem pokud je url uplne odlisna (napr. /neco/clanek.html). Tak jsem chtel jen presmerovat na tuto url s 404.
Nebo me napadlo jeste reseni ze pokud se mi nevrati z DB data, tak nak vyvolat vyjimku a pouzit presmerovani ktere je v nette pro chyby?

bojovyletoun
Člen | 667
+
0
-

Zrovna na něco podobného se chci zeptat. Budu mít takový statický web, ve tvaru server.cz/nazevclanku. Bude dohledávat názvy článků z DB například. Je lepší na to psát nový router (vracet NULL při neexistenci) nebo dohledávat v presenteru a házet badReqestExc při neexistenci.

zeptám se ze široka:

  • co je lepší návrh (hádám že první možnost)
  • jaká mají úskalí řešení
  • jednodušší napsat bude as druhou možnost
  • existuje/í SeoRoutery? na fóru jsem jich dost našel, která verze je nejnovější a most featured? a co umí oproti normální Route?
Werkov
Člen | 17
+
0
-

bojovyletoun napsal(a):

Je lepší na to psát nový router (vracet NULL při neexistenci) nebo dohledávat v presenteru a házet badReqestExc při neexistenci.

Tak tohle by mě taky zajímalo. Jak jsem se díval do tříd MultiRouter a Route, tak jediný podstatný rozdíl je v tom, že když budu už v routeru vracet NULL, tak můžu zajistit propadání na nějaké defaultní stránky (tzn. odpovídá-li parametr nazev-clanku nečemu, použiji to, jinak propadnu třeba na neco-co-neni-nazev-clanku-ale-chci-to-mit-na-stejnem-miste-v-url).

Dá se tohoto propadávání docílit i nějak jinak, než tímto způsobem? (Asi redirect, ale pak jsou routovací myšlenky rozesety na různých místech.)

Aurielle
Člen | 1281
+
0
-

V případě složitějšího návrhu a řešení vlastní router, jinak si vystačíš s filtry.