Upravení routy pro více typů zanoření modulů

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

Mám docela složitou aplikaci s dvěma modulama: Admin a Front. Přičemž Admin má v sobě další moduly jako Settings, Problem, Text, Gallery, … a Front má v sobě jen jeden presenter s pár akcema.
Moje routy momentálně vypadají takhle (a použije se vždy ta první):

$router[] = new Route('admin/<module>/<presenter>/<action>[/<id>]', array(
    "module" => "Admin:Login",
    "presenter" => "Login",
    "action" => "default"
));

$router[] = new Route('<action>[/<id>]', array(
    "module" => "Front",
    "presenter" => "Homepage",
    "action" => "default"
));

takže url pro něco ve FrontModulu vypadá takhle: /admin/front/homepage/aboutme, ale já bych chtěl, aby to bylo jenom: /aboutMe.

Routa pro něco v admin modulu vypadá takhle: /admin/admin.gallery/galleries/, ale to mi nevadí (jen by tam snad nemuselo být 2× to admin – ono je tam teď to admin/ zbytečně).

Ještě poslední věc, je že defaultně by to mělo uživatele hodit do :Front:Homepage:default, jako je v tý druhý routě.

Nenapadá vás jak sestavit nějak jednoduše routy, aby to vyplnilo tyhle požadavky? Díky

Editoval Darkry (15. 8. 2012 18:59)

JakubTN
Bronze Partner | 49
+
0
-

Myslim, ze by si mohol pouzit priamo riesenie, ktore je v examples v balicku Nette:

<?php
use Nette\Application\Routers\Route,
    Nette\Application\Routers\RouteList;

$container->router[] = new Route('index.php', 'Front:Default:default', Route::ONE_WAY);

$container->router[] = $adminRouter = new RouteList('Admin');
$adminRouter[] = new Route('admin/<presenter>/<action>', 'Default:default');

$container->router[] = $frontRouter = new RouteList('Front');
$frontRouter[] = new Route('<presenter>/<action>[/<id>]', 'Default:default');

?>
Darkry
Člen | 101
+
0
-

Wow, po mírné úpravě to funguje přesně, jak jsem potřeboval. Díky :)