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$routerRouteList?
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.
`php
$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)