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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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)