Více modulů v sobě a jejich routování
- Tirus91
- Člen | 199
Jak mám napsat routu aby mi brala něco podobného?
/ - app
/ --- AdminModule
/ ------ArticleModule
/ --- ArticleModule
/ --- FrontModule
....
Momentálně mám
$router[] = new Route('Admin/<presenter>/<action>/<id>', array(
'module' => 'Admin',
'presenter' => 'Default',
'action' => 'default',
'id' => NULL,
));
ale nevím jak pro ten ArticleModul …
Chtěl bych právě dát ArticleModul 2× (jednou pro administraci a jednou
pro usery)
Chtěl bych tedy docílit něčho jako
/admin/article → směřuje do AdminModule/ArticleModule
/article → směřuje do ArticleModule
Editoval Tirus91 (4. 3. 2014 21:36)
- David Matějka
- Moderator | 6445
asi takhle:
$router[] = $adminRoutes = new RouteList("Admin");
$adminRoutes[] = new Route("Admin/<presenter>/<action>[/<id>]", "Default:default");
- Tirus91
- Člen | 199
matej21 napsal(a):
asi takhle:
$router[] = $adminRoutes = new RouteList("Admin"); $adminRoutes[] = new Route("Admin/<presenter>/<action>[/<id>]", "Default:default");
Myslíš tedy takto?
$router[] = $mainRouter = new RouteList();
$mainRouter[] = new Route('index.php', 'Front:Default:default', Route::ONE_WAY);
$mainRouter[] = new Route('Article/<presenter>/<action>/<id>[-<title>]', array(
'module' => 'Article',
'presenter' => 'Topic',
'action' => 'default',
'id' => NULL,
));
$mainRouter[] = new Route('<presenter>/<action>/<id>[-<title>]', array(
'module' => 'Front',
'presenter' => 'Default',
'action' => 'default',
'id' => NULL,
));
$router[] = $adminRouter = new RouteList('Admin');
$adminRouter[] = new Route('Admin/Article/<presenter>/<action>/<id>', array(
'module' => 'Article',
'presenter' => 'Default',
'action' => 'default',
'id' => NULL,
));
to mi vyhodí
Unable to create service 'router', value returned by factory is not Nette\Application\IRouter type
Editoval Tirus91 (4. 3. 2014 21:44)
- Tirus91
- Člen | 199
matej21 napsal(a):
a vracit
$router
? obsahuje$router
RouteList?
Když jsem zkusil to co si mi poradil, tak to nemůže obsahovat routelist
přeci ;), ale obsahuje to pole těchto listů…
no lezl jsem po googlu a našel jsem něco takovéhleho
$router = new RouteList();
$router[] = new Route('index.php', 'Front:Default:default', Route::ONE_WAY);
$router[] = new Route('Admin/Article/<presenter>/<action>/<id>', array(
'module' => 'Admin',
'submodule' => 'Article',
'presenter' => 'Default',
'action' => 'default',
'id' => NULL,
));
$router[] = new Route('Admin/<presenter>/<action>/<id>', array(
'module' => 'Admin',
'presenter' => 'Default',
'action' => 'default',
'id' => NULL,
));
Jenže teď ten /Admin/Article mne stále odkazuje přímo do /AdminModule a ne do /AdminModule/ArticleModule
Editoval Tirus91 (4. 3. 2014 22:12)
- David Matějka
- Moderator | 6445
ja ti neporadil, at mazes $router = new RouteList()
, ale jak ma
vypadat routa, kterou nahradis tu, co si posilal v prvnim prispevku.
$router = new RouteList();
......
//normalni routy...
......
$router[] = $adminRoutes = new RouteList("Admin");
$adminRoutes[] = new Route("Admin/<presenter>/<action>[/<id>]", "Default:default");
return $router;
- Tirus91
- Člen | 199
matej21 napsal(a):
ja ti neporadil, at mazes
$router = new RouteList()
, ale jak ma vypadat routa, kterou nahradis tu, co si posilal v prvnim prispevku.$router = new RouteList(); ...... //normalni routy... ...... $router[] = $adminRoutes = new RouteList("Admin"); $adminRoutes[] = new Route("Admin/<presenter>/<action>[/<id>]", "Default:default"); return $router;
Tak to mám takto
$router = new RouteList();
$router[] = new Route('index.php', 'Front:Default:default', Route::ONE_WAY);
$router[] = new Route('Article/<presenter>/<action>/<id>[-<title>]', array(
'module' => 'Article',
'presenter' => 'Topic',
'action' => 'default',
'id' => NULL,
));
$router[] = new Route('<presenter>/<action>/<id>[-<title>]', array(
'module' => 'Front',
'presenter' => 'Default',
'action' => 'default',
'id' => NULL,
));
$router[] = $adminRoute = new RouteList('Admin');
$adminRoute[] = new Route('Admin/Article/<presenter>/<action>/<id>', array(
'module' => 'Article',
'presenter' => 'Default',
'action' => 'default',
'id' => NULL,
));
$adminRoute[] = new Route('Admin/<presenter>/<action>/<id>', array(
'presenter' => 'Default',
'action' => 'default',
'id' => NULL,
));
Ale momentálně se to snaží hledat Admin Presenter ve Front modulu
- Pavel Macháň
- Člen | 282
Tirus91 napsal(a):
Tak to mám takto
$router = new RouteList(); $router[] = new Route('index.php', 'Front:Default:default', Route::ONE_WAY); $router[] = new Route('Article/<presenter>/<action>/<id>[-<title>]', array( 'module' => 'Article', 'presenter' => 'Topic', 'action' => 'default', 'id' => NULL, )); $router[] = new Route('<presenter>/<action>/<id>[-<title>]', array( 'module' => 'Front', 'presenter' => 'Default', 'action' => 'default', 'id' => NULL, )); $router[] = $adminRoute = new RouteList('Admin'); $adminRoute[] = new Route('Admin/Article/<presenter>/<action>/<id>', array( 'module' => 'Article', 'presenter' => 'Default', 'action' => 'default', 'id' => NULL, )); $adminRoute[] = new Route('Admin/<presenter>/<action>/<id>', array( 'presenter' => 'Default', 'action' => 'default', 'id' => NULL, ));
Ale momentálně se to snaží hledat Admin Presenter ve Front modulu
Protože routy se hledají postupně… bere se první která vyhovuje…
V debug baru v routách máš napsaný jaká se použije (yes) a jaká ještě
vyhovuje (may)
Editoval EIFEL (4. 3. 2014 22:28)
- Tirus91
- Člen | 199
EIFEL napsal(a):
Tirus91 napsal(a):
Tak to mám takto
$router = new RouteList(); $router[] = new Route('index.php', 'Front:Default:default', Route::ONE_WAY); $router[] = new Route('Article/<presenter>/<action>/<id>[-<title>]', array( 'module' => 'Article', 'presenter' => 'Topic', 'action' => 'default', 'id' => NULL, )); $router[] = new Route('<presenter>/<action>/<id>[-<title>]', array( 'module' => 'Front', 'presenter' => 'Default', 'action' => 'default', 'id' => NULL, )); $router[] = $adminRoute = new RouteList('Admin'); $adminRoute[] = new Route('Admin/Article/<presenter>/<action>/<id>', array( 'module' => 'Article', 'presenter' => 'Default', 'action' => 'default', 'id' => NULL, )); $adminRoute[] = new Route('Admin/<presenter>/<action>/<id>', array( 'presenter' => 'Default', 'action' => 'default', 'id' => NULL, ));
Ale momentálně se to snaží hledat Admin Presenter ve Front modulu
Protože routy se hledají postupně… bere se první která vyhovuje…
V debug baru v routách máš napsaný jaká se použije (yes) a jaká ještě vyhovuje (may)
Jo, tak to je ono :) děkuji, jsem vocas :)
až na, ale to jdu študovat
Possible problem: you are sending a HTTP header while already having some data in output buffer. Try OutputDebugger or start session earlier. search►
vyřešeno,
jen otázka ještě..
když tam nyní dám odkaz
:Article:Topic
tak mi to odkazuje do
Admin:Article:Article
to je taky asi špatně, není to způsobený stejným názvem modulu a proto to pak takto blbne?
Editoval Tirus91 (4. 3. 2014 22:39)