Proměnná pro všechny šablony v presenteru

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

Zdravim,
chtěl sem se zeptat, jak udělat, aby byla nějaká proměnná v presenteru vložena do všech latte šablon? Prostě budu mít proměnnou např $test a chci aby fungovala v default.latte, test.latte apod.? Momentálně to řešim, že do každého renderu házim tu proměnnou, což je určitě chyba, ale zatim nevim, jak to hodin globálně do všech šablon. Děkuji za odpověď

ViPEr*CZ*
Člen | 822
+
0
-

Hoďte si to do nějakého BasePresenteru, který dědí ostatní Presentery a konkrétně do metody beforeRender.

mkoubik
Člen | 728
+
0
-
public function beforeRender()
{
    $this->template->test = ...
}
vtitl
Člen | 29
+
0
-

Měl bych k tomu další dotaz, hodil jsem do BasePresenteru

  public function beforeRender()
  {
      $this->template->infoProvoz = '1 sonda v provozu';
  }

Myslel jsem, že potom budu moci přistupovat k této proměnné ve všech šablonách (protože všechny presenetery tohle dědí), ale hlásí mi to Undefined variable: infoProvoz.

V čem je problém?
Díky!

Jan Endel
Člen | 1016
+
0
-

a cirou nahodou v tom presenteru kde ti to hlasi undefined variable nemas metodu beforeRender, ktera nevola parenta?

stefi023
Člen | 71
+
0
-

A neprepisujes nahodou nekde dal tu metodu beforeRender() aniz bys zavolal beforeRender() na predkovi?

public function beforeRender()
{
    parent::beforeRender();
    //code
}

Alias – nemas nahodou ve tvem prsenteru (v tom co dedi od BasePresenteru) metodu beforeRender(), aniz bys v ni zavolal parent::beforeRender()?

//EDIT pozde, @pilec byl rychlejsi a dokonce to ma v podpisu :)

Editoval stefi023 (4. 7. 2012 14:12)

vtitl
Člen | 29
+
0
-

Aaa ano, to je ono. Přepsal jsem si to.

Díky.

h4kuna
Backer | 740
+
0
-

Radši vidím definici nějakých proměnných pro šablonu v

protected function createTemplate($class = NULL) {
	$tpl = parent::createTemplate($class);
	$tpl->infoProvoz = '1 sonda v provozu';
	return $tpl;
}

protože nezapomeneš napsat parent::createTemplate($class); protože v ten moment ti přestanou jít šablony, ale viz situace s beforeRender si ani nevšimneš proč ti věci nemakaj jak maj.