Přesměrování „neco/1“ na „neco/1/nazev-clanku“
- gog
- Člen | 5
Ahoj,
podle návodu v dokumentaci
jsem si udělal routu ve tvaru
$router[] = new Route('<presenter>[/<action>][/<id [0-9]+>][/<title>]', array(
'presenter' => 'Homepage',
'action' => 'default'));
Je možné zařídit, aby se URL „localhost/detail/1“, přesměrovalo na hezké-URL „localhost/detail/1/nazev-clanku“? Jestli ano, můžete mě nakopnout, jak na to? Zkoušel jsem hledat ve fóru ale neúspěšně.
- Jan Endel
- Člen | 1016
Proč v presenteru to je fujík, pokud má router možnost, vždy se vydává cestou nejkratší adresy, toto chování lze ale změnit. Mělo by stačit něco takového (vykřičník před title):
$router[] = new Route('<presenter>[/<action>][/<id [0-9]+>][!/<title>]', array(
'presenter' => 'Homepage',
'action' => 'default'));
- Tomas Jancik
- Člen | 103
k tomu se tusim pouzivaji FILTER_IN, FILTER_OUT https://www.youtube.com/watch?…
a taky doporucuju zkouknout video https://www.youtube.com/watch?…
- gog
- Člen | 5
llook napsal(a):
To bych dělal v presenteru:
Díky, tohle bude nejspíš správné řešení.
Varianta s vykřičníkem mi bohužel nefunguje (resp. routuje to stejně, jako by tam vykřičník nebyl). Přes FILTER_IN a FILTER_OUT mám nastavené masky podle návodu.
Proč si myslím, že funguje jen varianta od llook: když zadám do prohlížeče „localhost/detail/1“, tak to uvedenému pravidlu vyhovuje a v presenteru se načte článek s id=1. Ale při routování ten článek ještě není načtený, tudíž se nezná jeho název (title), tudíž se url nepřepíše na požadovaný tvar. To zaručí až přesměrování v presenteru. Snad to chápu správně.
Editoval gog (15. 6. 2012 14:25)