Vložení dodatečných dat do šablony ručně vykreslovaného formuláře

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

Potřeboval bych nějak dostat do šablony, kde ručně vykresluji formulář, nějaké hodnoty. Hodnoty načítám na základě defaulních hodnot formuláře (to je ale vlastně úplně jedno). Nějak takto:

control.php

protected function createComponentPokusForm(){
	$form = new Form();
	// ...
	// ...
	$this->template->pokus = 'pokus'; // nějaký další data sem dostat a poté je v šabloně vypsat
	return $form;
}

.latte

{form pokusForm}
	Pokus: {$pokus}
{/form}

Toto ale skončí chybou, že proměnná pokus není definovaná. Za nakopnutí díky moc.

Jiří Nápravník
Člen | 710
+
+1
-

Dej to do action/render metody kde s tim formularem pracujes. Nebo ještě lépe udělej z toho formuláře komponentu a v render() si to tam pošleš.

flamengo
Člen | 135
+
0
-

Super, díky. Do render metody to půjde, nebo do handle. Ona to už celé vlastně je komponenta, která má 4 různé formuláře. A do jednoho to potřebuji nacpat.

Přišlo mi to takový elegantní toto řešit přímo v metodě createComponentForm1(), když se ty data budou týkat pouze formuláře Form1.

Editoval flamengo (21. 9. 2015 20:34)

Unlink
Člen | 298
+
0
-

No ono to teoreticky môže byť aj v create component ale nieje to najlepší nápad.
Toto nefunguje proste preto, lebo keď ide nette renderovať šablony, tak si vytiahne dáta z Presenter::$template a pokiaľ pri renderingu narazí na nejaký control alebo form, tak ho vytvorí (zavolá createComponent()) ale keď až tu nastavíš tú hodnotu, tak sa už do šablóny nedostane.