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 | 408
 
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)