Presenter: vždycky routuje na Presenter:default
- sairon
- Člen | 32
Mám problém s routováním na default action, měl jsem za to, že Presenter: by mělo routovat na default action, která je nastavená u daného presenteru v routeru. Ale místo toho se vždycky routuje na Presenter:default. Nastavení routeru je následující, chtěl bych, aby Sluzby: routovalo na Sluzby:corporateIdentity, ale není tomu tak. Nette verze 1.0 build ced2e04.
<?php
$router = $application->getRouter();
$router[] = new Route('index.php', array(
'presenter' => 'Homepage',
'action' => 'default',
), Route::ONE_WAY);
$router[] = new Route('sluzby/<action>', array(
'presenter' => 'Sluzby',
'action' => 'corporateIdentity',
));
$router[] = new Route('<presenter>/<action>', array(
'presenter' => 'Homepage',
'action' => 'default',
));
?>
- Mikulas Dite
- Člen | 756
Vážně? Já bych také čekal default jako to, co je nastavené v patřičné routě. Jestli to tak není, jaké to má využití?
- Honza Kuchař
- Člen | 1662
To je správně. Potom by routy mohly změnit fci aplikace. Což je nepřípustné. Když vytváříš link, vytváříš ho nezávisle na routě a routa mu jen udá tvar. Ty výchozí hodnoty se použijí při vstupu, tedy při zadání adresy uživatelem.
- pekelnik
- Člen | 462
Docela to chápu. Také jsem už několikrát měl nutkání udělat něco jako $presenter->setDefaultAction(‚dancing‘).
No nakonec jsem vždycky použil akci default. Ono je to tak nějak nejjednodušší.
dá se docílit toho, aby se link Presenter: zpracoval jinak než jako Presenter:default?
Toho bych se nerad nadál.
Pak je tady ještě Presenter::$defaultAction – což je ovšem statická proměnná a tedy „application scope“