Změna adresy pomocí routování
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- .:M@rt!n:.
- Člen | 201
Snažím se o routování, ale nějak to moc nechápu. V latte mám odkaz na detail akce:
<a n:href="Akce:detail $akce->id">
v bootstrap mám routování zatím takto:
if (function_exists('apache_get_modules') && in_array('mod_rewrite', apache_get_modules())) {
$container->router[] = new Route('index.php', 'Front:Default:default', Route::ONE_WAY);
$container->router[] = $adminRouter = new RouteList('Admin');
$adminRouter[] = new Route('admin/<presenter>/<action>', 'Welcome:default');
$container->router[] = $frontRouter = new RouteList('Front');
$frontRouter[] = new Route('<presenter>/<action>[/<id>]', 'Default:default');
} else {
$container->router = new SimpleRouter('Front:Default:default');
}
ale URL je takováto:
akce/detail?detail=1
Jak docílit toho aby byla takováto URL?
akce/detail/1
Děkuji za rady
- norbe
- Backer | 405
Problém je v tom, že parametr v presenteru máš pojmenovaný jako
$detail
, proto ho buď přejmenuj na $id
, nebo si
uprav router z
$frontRouter[] = new Route('<presenter>/<action>[/<id>]', 'Default:default');
na
$frontRouter[] = new Route('<presenter>/<action>[/<detail>]', 'Default:default');
- Melmen
- Člen | 132
Před
$container->router[] = $frontRouter = new RouteList('Front');
$frontRouter[] = new Route('<presenter>/<action>[/<id>]', 'Default:default');
Přidej
$container->router[] = $detailRouter = new RouteList('Front');
$detailRouter[] = new Route('akce/detail[/<detail>]', 'Akce:detail');
Psáno z hlavy :)
// pozdě :D
Editoval Melmen (23. 4. 2012 13:29)
- .:M@rt!n:.
- Člen | 201
Ať použiji jedno nebo druhé, tak skončím na adrese:
/akce/detail
ale pořeboval bych
/akce/detail/1
kde „1“ by bylo id detailu
EDIT: „1“ je zároveň i id akce v db
EDIT2: Tak to druhé řešení nakonec funguje… Chvíli jsem to nechal uležet a najednou to jde ;)
Editoval .:M@rt!n:. (23. 4. 2012 14:54)