Problem s formulari po upgrade 0.9 → 0.9.3

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

Ahoj, pouzival jsem takovyto modus pro editacni formular:

$hodnota = //ziskej hodnotu z db

$form = new Form('form1');
$form->addText('neco', 'nejaky label')->value = $hodnota;

if ($form->isSubmitted()) {
	if ($form->isValid()) {
		//uloz hodnotu do DB
	}
}

V 0.9 to fungovalo a bylo to docela pohodlne. Dosel jsem k tomu popravde metodou pokus-omyl protoze tady v dokumentaci https://doc.nette.org/cs/forms se asi predpoklada, ze vsechny formulare jsou prazdne ;-)

V 0.9.3 tohle uz nefunguje protoze volani ->value = $hodnota mi preplacne hodnotu nactenou z POSTu takze se nikdy neulozi zadna zmena. Existuje zpusob jak navratit puvodni funkcnost? Formularu mam tak 40, polovina z nich ma dynamicky generovane prvky… plnit vsude nejake pole abych ho mohl pak dat do setDefaults, coz je predpokladam spravny zpusob, to bude na dva dny prace.

Predem diky
Michal

Honza Kuchař
Člen | 1662
+
0
-

$form->addText('neco', 'nejaky label')->setDefaultValue($hodnota);
Ano musí se použít přímo fce. Nemá totiž getter.

Michal2
Člen | 2
+
0
-

A co hacknout Nette tak, aby se ->value chovalo jako ->setDefaultValue() ? Myslim, ze nikde nemam pouzito ve smyslu, ze by se menila hodnota na jinou nez defaultni (tedy nactenou z DB) na zaklade nejake akce, coz je predpokladam puvodni smysl value.

Ve FormController bych zmenil setValue aby se chovalo stejne jako setDefaultValue… muzu tim neco pokazit? :-)

Honza Kuchař
Člen | 1662
+
0
-

Hackuj co potřebuješ, ale být tebou, bych to rači párkrát přepsal.