Jak elegantně vkládat stejný obsah do všech presenterů

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

Zdravím,
rád bych čistě vyřešil tuto situaci:
potřebuji do všech stránek načítat seznam aktuálních článků (pro zobrazení např v levém sloupečku.) Přičemž na stránkách je použito víc presenterů.

Zatím mě napadlo jenom toto

  1. dát to přímo do layout (což by ale popřelo samotný koncept mcv)
  2. vytvořit komponentu která by se v každém použitém presenteru volala (také není právě optimální)
  3. pokud dobře chápu strukturu, pak by se toto mohlo vložit do nějakého basepresenteru a od něj pak odvíjet všechny ostatní

Víte někdo lepší řešení?

Pokud píšu zcestně tak mě zastavte, zkouším dát dohromady první projekt s NETTE a i po tutoriálu občas tápu.

Díky za pomoc

Ondrej
Člen | 110
+
0
-

nejlepsi reseni je kombinace vsech tri :) Udelat komponentu(control), kterou dat do base presenteru a v layout ji renderovat ;)

Jod
Člen | 701
+
0
-

Aj ja si myslím.

Ondřej Mirtes
Člen | 1536
+
0
-

Jo, takhle to dělám :)

Já mám taky problém s často řešenou věcí – potřebuju do šablony protlačit do foreachu víc druhů dat. Jedny data (např. články) dám tedy do $articles a pak je iteruju jako foreach $articles as $article, požadovanou věc mám tedy uvnitř cyklu v $article. Ale co když k daný věci potřebuju nějaký přidružený data z jiný tabulky/úplně odjinud? Teď to volám dost neelegantně, že je mám v dalším poli a to volám pomocí $pole[$iterator->getCounter()] (případně je v indexu něco jinýho, třeba $article->author_id). Jak by se to dalo řešit? Napadá mě, že nejlepší by to bylo asi JOINem už v modelu, co?

Editoval LastHunter (27. 2. 2009 2:11)

Jod
Člen | 701
+
0
-

Ano nato sú joiny.

Aleš
Člen | 30
+
0
-

ok, díky, zkusím, jenom mě trošku zmátlo toto v dokumentaci

View může měnit pouze presenter, proto komponenty pracují vždy pod tímto prahem, tudíž $component->link() vede na signál…

Takže mohu i odkazem z komponenty měnit view/presenter?

Jod
Člen | 701
+
0
-

Ja tam vidím aj niečo takéto:

Pro úplnost, i komponenta může volat $this->presenter->link('view').

V šablone: <?=$presenter->link(..)?>

S curlyBrackets: {plink ..}

Editoval Jod (27. 2. 2009 9:09)