Zavolání metody z jiného presenteru v layoutu

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

Zdravím,
chtěl bych se zeptat, zda-li jde v layoutu zavolat metoda z jiného presenteru, než ve kterém aktuálně jsem. V layoutu mám klasicky {include #content} a potřeboval bych tam ještě dostat obsah z metody jiného presenteru, která mi generuje menu.

Kousek layoutu:

...
<div id="menu">
  Zde nějak vložit menu z jiného presenteru
</div>
<div id="obsah">
  {include #content}
</div>
...

Předem děkuji za odpověď.

Ani
Člen | 226
+
0
-

Ne.

Můžeš to udělat, tak že budeš ty presentery, kde potřebuješ to menu dědit od nějakého, kde bude ta metoda (respektive kde v nějaký metodě (beforeRender, startup) naplníš tu šablonu).

Ale nejlepší je udělat si menu jako komponentu.

Corind
Člen | 6
+
0
-

Díky, to dědění mě nenapadlo.

edit: Nastal problém u té dědičnosti. Menu mám v šabloně rodiče jako blok, ovšem když v layoutu dám {include #menu}, tak Nette vyhodí Call to undefined block ‚menu‘. Jak mám zdědit i šablonu resp. ten blok z ní?

Editoval Corind (8. 10. 2010 18:38)

Jan Tvrdík
Nette guru | 2595
+
0
-
Ani
Člen | 226
+
0
-

Rodič nebude mít žádnou vlastní šablonu. V tom layoutu to nedávej jako blok, ale rovnou tam napiš obsah toho bloku.

Viz https://forum.nette.org/…enteru-ajaxu

Corind
Člen | 6
+
0
-

Hodil jsem to přímo do layoutu a už to chodí, díkes ;)