Rozdělení velkého formuláře do více menších a uložit jedním tlačítkem
- Danny
- Člen | 146
Ahoj,
jak obecně řešíte to že pokud máte jeden obrovský formulář, kde je
hromada inputů a potřebujete ho kvůli přehlednosti nebo znovu použitelnosti
rozdělit na komponenty?
Jde mi o to že mám formulář o kterým vím že bude rozsáhlý, rád bych ho nějak rozdělil(základní informace, finanční informace, kontaktní informace atd) a pro každou část udělal vlastní komponentu s šablonou, formem a zpracovával to jednotlivě. Nicméně jich bude hodně a bylo vhodné aby tam bylo jen jedno tlačítko které tyto komponenty uloží najednou (aby uživatel nemusel ukládat třeba 10 komponent po jedné).
Jde to vůbec? Jakou cestou se vydat? Mít jen jeden formulář a v něm to rozdělit alespoň do kontejnerů kvůli přehlednosti?
Díky :-)
- Pavel Kravčík
- Člen | 1196
Je to málo informací. Záleží na datech a hlavně jejich validaci. Pokud každá z těch 10ti částí má nějaká povinná data nebo závislá (např. krok 3 doprava ovlivní krok 6 doručení apod.), tak stejně jedno tlačítko nedává smysl. Protože to bude strašně nepřehledné v jaké části ten uživatel něco zapomněl vyplnit. Nemá to obecnou poučku, v tomhle případě jde vždy o konkrétní formulář. Ale můžeš popřemýšlet o:
- wizard form
- ajaxový form (každé tlačítko bude mít
onChange[]
) a uloží se hned pofocusOut
v JS. Tj. nepotřebuješ jedno velké tlačítko
- Danny
- Člen | 146
Ahoj @PavelKravčík díky za reakci,
nevím jestli bych to definoval jako kroky, neměl by to být wizard, ale ano
budou tam závislosti. Proč by jedno tlačítko nedávalo smysl? Kdybych měl
jeden obrovský formulář a na konci jeho tlačítko na uložení tak ten
princip bude úplně stejný, taky by uživatel hledal v jaké části co
zapomněl vyplnit.
Jde mi obecně o to jak k tomuhle problému přistupovat, protože mi nepřijde nejlepší řešení mít jeden obrovský form kde je vše nepřehledné jak z hlediska definice inputů tak z hlediska zpracování těch dat. Raději bych z toho měl několik části/komponent/kontejneru které by se například definovali i v jiné třídě se svojí šablonou (nebo i měli svoje vlastní zpracování dat ale to nevím jestli je reálné).
- mystik
- Člen | 313
No jak častý bude podle tebe use-case, kdy uživatel bude vyplňovat všechno najednou versus use-case, kdy bude chtít jen změnit údaje v jedné části. Z mého pohledu mi přijde lepší mít 10 logicky rozdělených částí ukládaných zvlášť než dlouhý form a jedním tlačítkem na konci. Pak když chci změnit jeden údaj v prostředku tak ho musím najít, scrollovat dolů, odeslat a když něco neprojde validací tak zase scrollovat nahoru, opravit, scrollovat dolů, odeslat, …
Maximálně bych tam dal tlačítko Uložit vše, které jen pomocí AJAXU odešle všechny části pomocí jejich submitů postupně.
- Danny
- Člen | 146
@mystik To je otázka, upřímně nevim, řekl bych že ze začátku to spíš bude vše na jednou a poté doplňování postupně. Tvoje myšlenka se shoduje s tím jak bych chtěl aby to vypadalo, můžeš mi blíž popsat jak prakticky vyřešit to aby se pomocí AJAXU zpracovali všechny části? Úplně nechápu jak to v praxi bude fungovat. Díky
- mystik
- Člen | 313
Asi bych na to šel jednoduše tak, že bych ty formuláře udělal AJAXově odesílané (používáš už něco na AJAXizaci appky?), a pak is jen selectnul všechna odesílací tlačítka (třeba si je označit nějakou speciální třídou) a poslal jim click() event. Prostě jen simulovat jako kdyby to uživatel postupně oklikal sám.
Záleží pak zda tam nebudou nějaké komplikace, třeba že ty formuláře nemůžou mít mezi sebou závislosti (odeslání jednoho vynutí překreslení jiného), apod. Tam už by to mohl být docela oříšek.