Routování submoduly a název role v url

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
spiider
Člen | 162
+
0
-

Ahoj mám stejné routy jako je v example v sandboxu při více modulech a chtěl bych mít po přihlášení uživatele url www.neco.cz/nazevJehoRole což by mělo směrovat do modulu FrontModule/UsersModule. Teď mám url ve tvaru www.neco.cz/users.homepage/

Tady je můj router:

$router[] = new Route('index.php', 'Front:Homepage:default', Route::ONE_WAY);

$router[] = $frontRouter = new RouteList('Front');
$frontRouter[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');

A takovou mam strukturu modulů:

  • AdminModule
  • FrontModule
    • UsersModule

Díky moc, nikde jsem to tady nenašel co by me pomohlo

Felix
Nette Core | 1196
+
0
-

Nevidim duvod proc by nefungovalo toto:

$userRouter[] = new Route('<role>/', 'User:default');

Pak v actionDefault budes kontrolovat jestli je prihlasenej, jestli role odpovida jeho roli a v pripade ze je jina, tak presmerujes na tu danou, treba.

spiider
Člen | 162
+
0
-

Tak jsem to upravil a vytvoril jsem persistentni parametr $role ktery posilam do adresy a po prihlaseni je to ok…adresu mam www.neco.cz/prodavac, ale pokud kliknu na dalsi stranku v menu ktera veda napr. na Profile: tak se mi sice parametr $role prenese, ale uz v nem neni prodavac ale je v nem users.profile takze vysledna adresa vypada takto:
www.neco.cz/users.profile/?… misto www.neco.cz/…avac/profile
Routy mam ted takto:

$router[] = new Route('index.php', 'Front:Homepage:default', Route::ONE_WAY);
$router[] = $frontRouter = new RouteList('Front');
$frontRouter[] = new Route('<role>/', 'Users:Homepage:default');
$frontRouter[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');

Editoval spiider (13. 7. 2013 15:11)

Felix
Nette Core | 1196
+
0
-

No to je jasny, protoze za <role> uz nic nemas.

$router[] = new Route('index.php', 'Front:Homepage:default', Route::ONE_WAY);
$router[] = $frontRouter = new RouteList('Front');
$router[] = $userRouter = new RouteList('Users');
$userRouter [] = new Route('<role>/<presenter>/<action>[/<id>]', 'Homepage:default');
$frontRouter[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');

Byl bych s tim, ale opratrny.

Editoval Felix (14. 7. 2013 9:22)

David Matějka
Moderator | 6445
+
0
-

a role musi byt persistentni parametr

Editoval matej21 (14. 7. 2013 12:22)

spiider
Člen | 162
+
0
-

Tohle sem tak udelal ale url po prihlaseni je www.neco.cz/users.homepage/?… a do persistent parametru se priradi users.homepage

David Matějka
Moderator | 6445
+
0
-

koukni, jestli mas dobre poradi rout, ta s roli musi byt pred tou druhou

spiider
Člen | 162
+
0
-

Mam to takhle:

$router = new RouteList();
$router[] = new Route('index.php', 'Front:Homepage:default', Route::ONE_WAY);
$router[] = $frontRouter = new RouteList('Front');
$router[] = $userRouter = new RouteList('Users');
$userRouter [] = new Route('<role>/<presenter>/<action>[/<id>]', 'Homepage:default');
$frontRouter[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');

a ono to do <role> proste dosadi spatnou hodnotu