Problem s formulari po upgrade 0.9 → 0.9.3
- Michal2
- Člen | 2
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
$form->addText('neco', 'nejaky label')->setDefaultValue($hodnota);
Ano musí se použít přímo fce. Nemá totiž getter.
- Michal2
- Člen | 2
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? :-)