Teplate pro $id akci actionView($id)

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

Ahoj,
mam staticky web, a potrebuju aby presenter, ktery ma akci napriklad actionView($id) nacital sablony
/templates/Presenter/view/default.latte – kdyz nebude definovano $id
jinak nacital sablony podle predaneho $id takze treba kdyz $id = „typ1“ tak
/templates/Presenter/view/typ1.latte

umi toto Nette defaultne?

Diky
Honza

Editoval dotTwelve (15. 2. 2013 15:55)

davidm
Člen | 81
+
0
-
public function actionView($id)
{
  $this->view = 'whatever';
}

renders whatever.latte
Tabetha
Člen | 140
+
0
-

toto by malo fungovať

public function actionView($id)
{
	$latte = empty($id) ? 'default' : $id;
	$this->template->setFile($latte . 'latte');

}
dotTwelve
Člen | 167
+
0
-

ok, diky moc, takze si tam do ty akce hodim switch case a budu podle $id zobrazovat naprosto stejne jmenovany sablony

mam to takto, ale nefuguje mi to, ze chybi sablona, nehleda to nahodou nekde v rootu tu sablonu?

<?php
$latte = empty($type) ? 'default' : $this->getAction() . "-" . $type;
$this->template->setFile($latte . '.latte');
?>

Editoval dotTwelve (15. 2. 2013 16:07)

Jan Endel
Člen | 1016
+
0
-

Proboha au, tohle vyřešit přes routování ideálně a nedělat tam takové harakiri se šablonama. (kdyžtak alespoň používat setView jak už bylo razeno).

dotTwelve
Člen | 167
+
0
-

Hm, no jak pres routovani?
Toto mi uz funguje…je to spatny pristup?

<?php
public function actionWindowAndDoor($type) {
    $latte = empty($type) ? 'default' : $this->getAction() . "-" . $type;
    $this->template->setFile(__DIR__ . '/../templates/' . $this->getName() . '/' . $latte . '.latte');
  }
?>

Predpokladam, ze lepsi je tedy toto, taktez mi funguje:

<?php
public function actionWindowAndDoor($type) {
    if ($type) {
      $this->view = $this->getAction() . "-" . $type;
    }
  }
?>

Editoval dotTwelve (15. 2. 2013 16:29)

Felix
Nette Core | 1247
+
0
-

Routovani:

$router[] = new Route('<action>', 'Page:homepage');