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
+
0
-

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
+
0
-

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)