začátečnický dotaz jak na form

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

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:

  1. načetl si údaje z db,
  2. 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
  3. pokud uživatel klikl na editaci projel data, zda souhlasí typy (kontrola)
  4. 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
  5. pokud byla změna, uložil jen změnu.

Jak ale na to v nette?

  1. načtení údajů bych zvlál (jen ještě nevím jak načíst data z db směr combobox)
  2. vložení dat do formuláře (asi směr defaultní hodnoty), rovnou uložit asi do session?
  3. 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
+
0
-

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
+
0
-

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)