Jak nastavit routování – co dělám špatně
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- svobodai
- Člen | 136
Mám problém s routováním.
mám takovouto adresářovou strukturu
- app
- AdminModule
- TestModule
v app je hlavní aplikace,
v test je testování nového vývoje,
v admin je administrace
test a app maji jazykově závislé verze.
v bootstrap.php mám routování nastaveno takto.
<?php
$router = $container->router;
$router[] = $frontRouter = new RouteList();
$frontRouter[] = new Route('index.php', 'Homepage:default, lang=cz', Route::ONE_WAY);
$frontRouter[] = new Route('<lang>/<action>', 'Homepage:default, lang => cz');
$router[] = $adminRouter = new RouteList('Admin');
$adminRouter[] = new Route('admin/index.php', 'Admin:default', Route::ONE_WAY);
$adminRouter[] = new Route('[<lang>/]<presenter>[/<action>][/<id>]', 'Admin:default');
$router[] = $testRouter = new RouteList('test');
$testRouter[] = new Route('test/index.php', 'Test:default', Route::ONE_WAY);
$testRouter[] = new Route('<lang>/<presenter>[/<action>][/<id>]', 'Test:default');
?>
bohužel mi to nefunguje správně.
když dám do adresního řádku test tak mi to tvrdí, že nemám
v AdminModule definován TestPresenter.php
Co dělám špatně.
- Tomáš Kolinger
- Člen | 136
A taky má pravdu. Ty prefix admin/
uvádíš jen v routě
index.php
… Přitom v routě kterou používáš primárně to
nemáš… A tak se test
logicky dosadí jako
<presenter>
routy pro Admin
modul.
$router = $container->router;
$router[] = $frontRouter = new RouteList();
$frontRouter[] = new Route('index.php', 'Homepage:default, lang=cz', Route::ONE_WAY);
$frontRouter[] = new Route('<lang>/<action>', 'Homepage:default, lang => cz');
$router[] = $adminRouter = new RouteList('Admin');
$adminRouter[] = new Route('admin/index.php', 'Admin:default', Route::ONE_WAY);
$adminRouter[] = new Route('admin/[<lang>/]<presenter>[/<action>][/<id>]', 'Admin:default');
$router[] = $testRouter = new RouteList('test');
$testRouter[] = new Route('test/index.php', 'Test:default', Route::ONE_WAY);
$testRouter[] = new Route('test/<lang>/<presenter>[/<action>][/<id>]', 'Test:default');
Editoval Tomáš Kolinger (1. 3. 2013 21:13)