Routy – action jako parametr pro renderDefault

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

mam takoveto nastaveni routy:

$frontRouter[] = new Route('<lang [a-z]{2}>/<presenter>/<action>', array(
            'presenter' => 'Homepage',
            'action' => 'default',
            'id' => NULL,
            'lang' => 'en'
        ));

jakym zpusobem udelam, aby se obsah action predal v presenteru metode renderDefault jako parametr?
ted kdyz zadam napr. adresu: cz/mujpres/akce, tak se Nette snazi nacist MujpresPresenter/akce.latte.

Ja bych chtel, aby nacetlo MujpresPresenter/default.latte s parametrem akce

dekuji

Filip Procházka
Moderator | 4668
+
0
-

Můžeš zkusit změnit pohled na default

public function actionAkce()
{
	$this->setView('default');
}
simPod
Člen | 383
+
0
-

to vypada dobre. A neco dynamictejsiho? Nazev akce je totiz hodnota z databaze, takze to nemuzu mit v presenteru staticky kazdou akci napsanou… kdyz hodim $this->setView('default'); to metody startup() bude to hodne spatne co se tyce cistoty kodu?

duke
Člen | 650
+
0
-

A proč tedy vůbec používáš v routě <action>, když chceš, aby action byla vždy rovna „default“.

Můžeš použít např.:

$frontRouter[] = new Route('<lang [a-z]{2}>/<presenter>/<slug>', array(
    'presenter' => 'Homepage',
    'action' => 'default',
    'lang' => 'en'
));

A v presenteru pak:

public function renderDefault($slug)
{
    // @TODO
}