Routa mezi moduly se vygeneruje na jiný modul
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- akadlec
- Člen | 1326
Mám definovanou routu pro oauth ve frontend prostředí takto:
$list[] = new Routers\Route('//www.%domain%/[!<locale [a-z]{2,4}>/]oauth-[!<type=google>]', array(
'module' => 'Frontend',
'presenter' => 'Sign',
'action' => 'oauth',
NULL => array(
Routers\Route::FILTER_IN => function (array $params) {
$params['do'] = $params['type'] . 'Login-response';
unset($params['type']);
return $params;
},
Routers\Route::FILTER_OUT => function (array $params) {
if (empty($params['do']) || !preg_match('~^([^-]+)Login\\-response$~', $params['do'], $m)) {
return NULL;
}
$params['type'] = Utils\Strings::lower($m[1]);
unset($params['do']);
return $params;
}
),
'locale' => array(
Routers\Route::VALUE => 'en',
'fixity' => Routers\Route::CONSTANT,
)
));
v adminu chcu pak tu routu vykreslit do šablony a když udělám:
{link //:Account:Frontend:Sign:oauth}
Tak se mě vygeneruje tvar do adminu což není zrovna ok ani dle definice te routy. Co dělám špatně?
- David Matějka
- Moderator | 6445
Pouzij route list. Ten module
parametr je pouze defaultni
hodnota (stejne jako s ostatnimi parametry). Slo by to teda asi nejak zafixovat
pomoci Nette\Application\Route::CONSTANT
do metadat module
parametru, ale pak by ti to neumoznilo pouzit jiny modul nez Frontend (a tedy
ani ne zanoreny)
Editoval matej21 (6. 10. 2014 18:13)
- David Matějka
- Moderator | 6445
$list[] = $frontRouter = new RouteList('Frontend');
$frontRouter[] = new Route('....', array(stejne, jen vynechej module));
tim dojde k prefixovani modulu „Frontend“ pro vsechny routy
Editoval matej21 (7. 10. 2014 12:15)