kdy posílat data do template

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

Asi mě klepnete přes prsty, páč asi dělám nějakou prasárnu.
Mám modul, kde v constructoru default presenteru posílám data do šablony $this->template->name = $name; Dál si ve stejném presenteru připravim form, při jehož odeslání se zavolá callback. V callbacku si nastavim flash zprávičku a pak redirektnu $this->redirect('this');. Mno a teď nastává ten problém, pokud v constructoru „nešahám“ na template, pak flash zprávičky fungujou. Pokud ale použiju zmíněný řádek $this->template->name = $name;, flash zprávičky nejedou. Můžete mi někdo prosím vynadat a říct, co dělám špatně? :)

jtousek
Člen | 951
+
0
-

Data do šablon se mají dávat v metodě render<view>.

Doporučuji tento odkaz:
https://doc.nette.org/…n/presenters

redhead
Člen | 1313
+
0
-

Nepřepisovat konstruktor! To se v Nette nevyplácí, pokud nevíš co to přesně dělá. Proč nepoužiješ metodu startup()?

Gruid
Člen | 25
+
0
-

redhead

Teď už použiju :)
Dík oběma za popostrčení

redhead
Člen | 1313
+
0
-

Ono do šablony je někdy skoro až nutnost zapisovat jisté věci ve startup metodě. Když například chci pro všechny view informace o uživateli, nebo to jestli je přihlášen, název sekce (presenteru), atd.. Kdybych to měl používat jen v render metodách, tak je duplikování kódu a velká nekomfortnost pro programátora. To jen tak na vysvětlení principů.

norbe
Backer | 405
+
0
-

Ne že bych chtěl rýpat, ale na věci společné pro všechny view bych použil spíš beforeRender. Ve výsledku je to jedno, ale přijde mi to čistější než v metodě startup, pokud ty data nepotřebuju ještě k něčemu jinému.

redhead
Člen | 1313
+
0
-

No to je taky pravda, na tuhle metodu jsem zapomněl.. Beru zpět.

Gruid
Člen | 25
+
0
-

beforeRender jsem vlastně už jednou používal v mým prvním nette pokusu. Nevim, proč jsem se teď nějak přesunul ke konstruktoru. Už to krásně šlape. Ještě jednou dík.

Aurielle
Člen | 1281
+
0
-

… i kdybys chtěl nutně přepisovat konstruktor tak musíš zavolat i rodiče pomocí parent::__construct();