Routa směřuje jinam než bych chtěl
- joe
- Člen | 313
Zdravím,
narazil jsem na problém, který nevím jestli je problémem a nebo dělám něco špatně já. Mám moduly Front a Admin a v každém z nich mám DefaultPresenter.
Nastavení rout
$router[] = new Route('index.php', array(
'lang' => 'en',
'module' => 'Front',
'presenter' => 'Default',
'action' => 'default',
), Route::ONE_WAY);
$router[] = new Route('<lang>/admin/<presenter>/<action>/<id>', array(
'lang' => 'en',
'module' => 'Admin',
'presenter' => 'Default',
'action' => 'default',
'id' => NULL,
));
$router[] = new Route('<lang>/<presenter>/<action>/<id>', array(
'lang' => 'en',
'module' => 'Front',
'presenter' => 'Default',
'action' => 'default',
'id' => NULL,
));
Od toho bych očekával, že pokud přijdu na example.com dostanu se na
Front:Default:default s výchozím jazykem angličtina.
Ale ne, Nette mě směřuje do modulu Admin, takže se nikdy nemám možnost
dostat do presenteru Default v modulu Front, proč?
Co dělám špatně?
(PHP Version 5.3.2; Nette 0.9.5 stable ze dne 1. 7. 2010)
Děkuji za odpovědi
Editoval joe (20. 8. 2010 12:11)
- Panda
- Člen | 569
$router[] = new Route('<lang>/admin/<presenter>/<action>/<id>', array(
'module' => 'Admin',
'presenter' => 'Default',
'action' => 'default',
'id' => NULL,
));
Když je parametr lang
volitelný, tak se jako volitelné
označí i ten řetězec /admin/
, co je za ním. Ono Ti to stejně
nebude nijak vadit, protože pokud routa bude obsahovat ten
/admin/
, tak tam ten lang
stejně musí být.
- joe
- Člen | 313
Panda napsal(a):
Ono Ti to stejně nebude nijak vadit, protože pokud routa bude obsahovat ten
/admin/
, tak tam tenlang
stejně musí být.
OPRAVA: Tak jsem to měl přehozené, ale jak to tedy udělat, aby pokud když půjdu na example.com se načítalo z modulu Front a ne z modulu Admin. Chápu, že to teda není možné?
Editoval joe (20. 8. 2010 14:23)
- joe
- Člen | 313
Já to měl přehozené (ty dvě routy), dopsal jsem příspěvek a odeslal a
pak jsem si toho všiml, tak jsem to opravil.
Aha, už tomu rozumím, tak díky za vysvětlení. ale pořád jsem nedošel
k tomu, jak po zadání example.com se dostat do modulu Front – defaultní
presenter.
Nebo nevím, jak mám udělat ty parametry, aby nebyly volitelné(?)
Díky moc za pomoc a trpělivost :-) Ještě jsem se s tím nesetkal a teprve teď jsem s tím měl problém.
- Panda
- Člen | 569
Jsem Ti to tam napsal, stačí neuvádět v poli, které předáváš jako
druhý argument konstruktoru třídy Route
, hodnotu pro daný
parametr:
$router[] = new Route('<lang>/admin/<presenter>/<action>/<id>', array(
'module' => 'Admin',
'presenter' => 'Default',
'action' => 'default',
'id' => NULL,
));
//Doplnění: teda pardon, napsal jsem to jako kód, omlouvám se, pokud ta změna nebyla vidět.
Editoval Panda (20. 8. 2010 19:16)