Skrytí výchozího presenteru v URL

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

Zdravím,
chci se zeptat, jak lze skrýt presenter v URL, pokud má svou výchozí hodnotu.
Mám presenter Home a nějaké akce act1, act2, act3 a routu <presenter=Home>/<action=act1>.
Při requestu Home:act1 je vše v pořádku a URL je neco.cz/. Ale např. při Home:act2 už to je neco.cz/Home/act2, ale já chci neco.cz/act2.

Existuje nějaké elegantní řešení než jen toto?

new Route('<action>', array(
    'presenter' => array(
        Route::VALUE => 'Home'
    ),
    'action' => array(
        Route::VALUE => 'act1'
    )
));

Rád bych, aby stejná routa fungovala i třeba s AnotherPresenter:act2neco.cz/AnotherPresenter/act2.

Editoval vasam (8. 7. 2014 17:36)

MartinitCZ
Člen | 580
+
0
-

Dej si tahle routy a bude to fungovat jak potřebuješ.
Samozřejmě, ale jen na HomepagePresenter.

new Route('<action>', 'Homepage:default');
new Route('<presenter>/<action>', 'Homepage:default');

Editoval MartinitCZ (8. 7. 2014 17:36)

vasam
Člen | 26
+
0
-

Tomu jsem se právě chtěl vyhnout – podle mě zbytečná routa navíc :-/

MartinitCZ
Člen | 580
+
0
-

Není navíc, jen rozšiřuje další routu. Ale pokud myslíš, že je „navíc“, tak zkus jiný způsob.
Lepší neznám.

greeny
Člen | 405
+
0
-

Teď si to ale vem z druhý strany:
Dostaneš url /blah → jak má Nette vědět, jestli je to Foo:blah nebo Blah:default? Proto je tam ta druhá routa.

vasam
Člen | 26
+
0
-

greeny: To je vlastně pravda. Ok, díky za vysvětlení.