Jak pridavat ve formulari polozky po odeslani ajaxem?

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

Zdravim.
Resim nasledujici problem – mam formular sestavajicich z checkboxu. Po kliknuti na checkbox formular ajaxove odesilam, z db vytahnu data a pote potrebuji do formulare pridat polozku (pro jednoduchost textinput) naplnenou daty z db.
Zkousel jsem to resit tak, ze si v submit metode formu zkontroluji, jestli se odesila ajaxove, pokud ano, nastavim promennou presenteru a podle ni upravuji tvorbu formulare v tovarnicce (= pridavam textinputy). Takto to vsak asi nefunguje, protoze se vykresluje porad stejny formular.

Nekdo nejaka rada jak na to?
Diky

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Vysvětlení tohoto jevu je následující: pokud nastavuješ proměnné, které ovlivní sestavení formuláře, ve zpracování onoho formuláře, je pochopitelné, že v okamžiku zavolání toho zpracovávacího callbacku již formulář musí být sestavený :).

Možným řešením je sestavit vždy formulář kompletní, renderovat ho manuálně, a v tom callbacku si pouze do šablony předat nějakou proměnnou, podle které se některé prvky vykreslí a jiné ne. A třeba to ještě zabalit do snippetu, a ten invalidovat. Zároveň ti to bude fungovat i bez Ajaxu. Jen bude možná třeba nějak ošetřit, aby ti tam nevznikla bezpečností díra či nekonzistence (kdyby nějaký šotek ti podstrčil taková POST data, jaká by nikdy neměla vzniknout, protože počítáš s tím, že prvek se nevykreslil, ale Nette formulář ho bude očekávat (protože prvek bude nastavený).

Azim
Člen | 41
+
0
-

Diky za radu.

neexistuje na to nejaky bestpractice? zda se mi zvrhle v tovarnicce vyrabet cely obrovsky formular a pak v sablone podle promennych nektere casti nevykreslovat. nebo se to tak bezne dela?

v soucasne dobe to mam vyresene tak, ze ve formu mam definovany container, ktery si v submit metode zpristupnim, do nej pridam potrebne inputy a pak form invaliduji.

Editoval Azim (14. 2. 2013 18:32)