Routa na všechny moduly kromě Front
- na1k
- Člen | 288
Mám trochu problémek – aplikace je rozdělená tak, že celý frontend
je v modulu Front
a jakýkoliv jiný modul vede do backendu. Routy
by měly fungovat tak, že frontend se chová stejně jako třeba bezmodulový
example z distribuce, zatímco routa do backendu je uvozená
admin/
a obsahuje v adrese i modul.
$router[] = new Route('admin/<module !Front>/<presenter>/<action>/<id>', array(
'module' => 'Dashboard',
'presenter' => 'Default',
'action' => 'default',
'id' => NULL,
));
$router[] = new Route('<presenter>/<action>/<id>', array(
'module' => 'Front',
'presenter' => 'Homepage',
'action' => 'default',
'id' => NULL,
));
Zkusil jsem „všechny moduly kromě Front“ zapsat jako
!Front
, což se jevilo jako funkční. Jenže problém nastal při
generování odkazu (z :Dashboard:Default:default) například na modul login
($this->redirect(":Login:Default:")
) – vyskakuje výjimka
„No route for Login:Default:default()“.
Poradil by někdo, jak toto řešit? Samozřejmě do routy nemůžu vypisovat všechny možné hodnoty backend modulů, stejně jako nechci routy vytvářet dynamicky. Ještě dodám, že používám vlastní adresářovou strukturu (PresenterLoader), ale to by podle mě mělo být při tvorbě odkazu irelevantní.
- na1k
- Člen | 288
Vyřešeno! Následující kombinace rout vypadá že funguje podle očekávání :-)
$router[] = new Route('admin/<module (?!Front)[^/]+>/<presenter>/<action>/<id>', array(
'module' => 'Dashboard',
'presenter' => 'Default',
'action' => 'default',
'id' => NULL,
));
$router[] = new Route('<presenter>/<action>/<id>', array(
'module' => 'Front',
'presenter' => 'Homepage',
'action' => 'default',
'id' => NULL,
));