Dynamicky generovaný formulář z existujících $_POST dat

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

Ahoj. Mám formulář, ve kterém je multiSelect. Jenže ten select nezná přesně data, která má obsahovat, já mu ta data předávám „dynamicky“. Ten multiSelect je takový TODO seznam, vyberu několik hodnot, které mám v aplikaci provést a po odeslání formuláře a provedení těch akcí se upraví multiSelect tak, že ty staré hodnoty zmizí. Řeším to tak, že seznam těch hodnot posílám v hiddenu v kontejneru a po provedení akcí je z toho kontejneru mažu. Problém je samotné naplnění toho kontejneru. Protože se jedná o dynamický formulář, tak ty hodnoty ručně načítám z $_POST, což mi nepřijde v kombinaci s Nette příliš šťastné. Je nějaká možnost, jak pomocí Nette formulářů získat seznam těch hodnot v tom kontejneru, aniž bych musel číst tu superglobální proměnnou?

redhead
Člen | 1313
+
0
-

Když poprvé naplníš select, tak ty hodnoty bereš asi z nějaké db, ne? Tak po odeslání stačí redirect na tu samou stránku a načtou se z db už updatovaná data (ty předtím označená už v db nebudou) a nemusíš to plnit z postu.. Aspoň tak jsem to pochopil.

vasek125
Člen | 34
+
0
-

To první naplnění je z uživatelského vstupu, proto takové doufám že dočasné řešení se superglobálním POST.

Filip Procházka
Moderator | 4668
+
0
-

Nejsem si jistý, že chápu tvůj problém. Zkus to trošinku více rozepsat. Takto by to nešlo?

První request

  • načte se formulář a v něm mám nějaké hodnoty z db
  • uživatel nějaké hodnoty vybere a odešle

Druhý request

  • vytvořím ten samý formulář
  • zpracuju v databázi co se má změnit v callbacku formuláře
  • (pokud potřebuju vypsat hned formulář) upravím pomocí setItems() selectbox podle aktuálních hodnot, které se mají vypsat
  • (pokud nepotřebuju vypsat hned formulář) přesměruji

Request po přesměrování

  • vytvořím formulář s novými hodnotami
  • vykreslím
  • opakuje se od začátku

Kde je problém?

vasek125
Člen | 34
+
0
-

Funguje to takto: uživatel si na nějaké stránce (v jiném formuláři) vybere checkboxem seznam akcí, které si přeje vykonat, ten jiný formulář je odeslán na stránku s tímto formulářem, v něm si uživatel vybírá v multi selectu akce a ve zbytku formuláře vyplní, které parametry se mají aplikovat pro všechny vybrané (v multi selectu) akce. Po úspěšném provedení akcí zmizí z multi selectu provedené akce a uživatel opět vybírá, pro které se mají aplikovat vybrané parametry. To celé pokračuje, dokud není multi select prázdný. Je to vlastně takový průvodce, kterého jsem řešil tímto způsobem, protože může ulehčit hoodně času.