Dynamické pole ve formulářích
- Webster.K
- Člen | 211
Zdravím všechny, ve formulářích používám contributte/forms-multiplier pro dynamické přidávání polí do formuláře. Řeším takovou jednu drobnost. Když vytvořím/edituju formulář, vše funguje normálně. Ale když nějakou již vyplněnou hodnotu (když je už uložená v DB) nemám jak smazat. Formulář tlačítko pro ten řádek, který chci smazat má tlačítko na smazání řádku, které je: multiplier[0][multiplier_remover], resp multiplier[id radku od nuly][multiplier_remover].
Jak docílim akce, která se vykoná na pozadí, když na toto tlačítko kliknu? Líbila by se mi nějaká action metoda nebo nějaké zavolání nějaké funkce, ale na nic jsem nepřišel.
Momentálně to řeším tak, že když se formulář uloží, tak všechny data v DB smazu a zase je díky formuláři znovu vytvořím – neohrabané, ale funguje. Netuší někdo, jak to mazat již po stisknutí tlačítka na konci řádku?
Editoval Webster.K (12. 10. 21:54)
- MajklNajt
- Člen | 493
myslím, že väčšina to robíme tak, ako aj ty, možno sa skús pohrať
ešte s array_diff
, aby si nemusel mazať a vkladať tie isté
hodnoty
chovanie okamžitého zmazania naozaj nechceš, pretože bežný používateľ očakáva, že zmeny sa uložia až v momente odoslania formulára…
Editoval MajklNajt (14. 10. 10:11)
- AntiCZ
- Člen | 13
Jak pise MajklNajt, ukladat neco do DB pred odeslanim formulare neches.
Na krasu se vykasli, hlavne si pohlidej, at ten delete a insert je v transakci, at neprijdes o data (plus php-session nebo sessionStorage).
Pokud chces krasu, tak to prepis do Reactu nebo Vue a udelej si k tomu api-endpoint.
Editoval AntiCZ (16. 10. 6:46)
- ZahorskyJan
- Člen | 59
Vše mazat a zase vkládat je nesmysl a nebezpečné, pokud by na to byly navázané další záznamy.
Při uložení stačí udělat “porovnáni”, tedy poznat podle záznamů v DB a podle odeslaných dat co je potřeba vytvořit, co upravit a co smazat. Takže když se nic nezmění v e fromuláři, tak se po odeslání nic nestane.