Upravení routy pro více typů zanoření modulů
- Darkry
- Člen | 101
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
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');
?>