začátečnický dotaz jak na form
- tatyalien
- Člen | 239
Mám dotaz začátečníka jak „něco“ udělat…
Zatím jsem programoval vdžy cistě něobjektově a bez Nette, takže například zpracování formulářů jsem dělal jinak a nevím jak na „podobný“ systém najet…
Postupoval jsem při například editaci údajů z DB:
- načetl si údaje z db,
- načtené údaje vložil do formuáře a rovněž uložil do SESSION, pokud je formulář combobox, uložil si načtené data do spešl pole a s tímto polem pak dále i pracoval
- pokud uživatel klikl na editaci projel data, zda souhlasí typy (kontrola)
- porovnal, zda a k jaké změně údajů vůbec došlo (oproti session), pokud se nic nezměnilo, tak informoval uživatele, že není potřeba ukládat změny
- pokud byla změna, uložil jen změnu.
Jak ale na to v nette?
- načtení údajů bych zvlál (jen ještě nevím jak načíst data z db směr combobox)
- vložení dat do formuláře (asi směr defaultní hodnoty), rovnou uložit asi do session?
- přiřadit: $form->onSubmit[] = array($this, ‚moje_funkce‘);
a v moje_funkce kontrolovat vše? (od zda byla změna, nebo ne), + rovnou ukládat do DB?
Editoval tatyalien (28. 1. 2011 13:03)
- srigi
- Nette Blogger | 558
V podstate uvazujes spravne. Len nedavno tu prebehla diskusia o tom, ze
useri kceli fnci $form->isChanged()
alebo nieco na tensposob.
David velmi dobre poznamenal, ze nema zmysel branit sa jednemu UPDATE.
Combobox akceptuje pole hodnot. Vsak to najdes v doku.
Editoval srigi (28. 1. 2011 13:33)
- tatyalien
- Člen | 239
To že akceptje pole hodnot vím ;), jen nevím v jaké fázi plnit data (získat) jestli metodou, nebo přímo v továrničce.
No jeden update… pokud jsem používal úložiště inno db a transakci,
tak pokud bych odeslal data, transakce proběhla v pohodě, ale nedošlo ke
změně, tak by mě to pak řvalo, že došlo k selhání (chybová hláška co
jsem měl, když se nic neopravilo, když ano, tak info o úspěchu) :-D
Proto jsem si musel dodělávat do určitých editací kontrolu, zda k nějaké
změně vůbec došlo…
Oki, tak si půjdu hrát s nette trochu dále ;)
Editoval tatyalien (28. 1. 2011 13:48)