Komponenta s formulářem uvnitř jiného formuláře
- Martin Vágovszký
- Člen | 14
Zdravím, mám use case kdy potřebuju přidat komponentu s formulářem (s vlastní obsluhou) dovnitř jiné komponenty, která je sama obalena formulářem. Čili mi v HTML vzniknou dva formuláře zanořené v sobě. Funguje to, ale je to principielně korektní? Nedaří se mi nikde dohledat, jestli toto někdo už řešil.
- m.brecher
- Generous Backer | 837
Zanořování formulářů na úrovni html není dobrý nápad – https://www.geeksforgeeks.org/…orm-in-html/
Popiš víc detailně, co vlastně potřebuješ udělat, bude potřeba na to jít jinudy.
- Martin Vágovszký
- Člen | 14
Mám ublaboo datagrid ve kterém mám pro každý řádek v item detail
další vnořený datagrid, což se mi povedlo rozběhat. Na obou datagridech mi
fungují inline add i inline edit.
Teď bych potřeboval k tomu vnořenému datagridu přidat ještě formulář
pro nahrávání souboru. a když jsem se díval na generované html tak jsou
tam zanořené formy, což je asi blbě.
- m.brecher
- Generous Backer | 837
@MartinVágovszký
Mám ublaboo datagrid ve kterém mám pro každý řádek v item detail další vnořený datagrid, což se mi povedlo rozběhat.
Proč potřebuješ mít řádek v tabulce reprezentovaný vnořeným datagridem ? Pokud je záměrem použít pro editaci řádku datagrid, tak by asi bylo lepší datagrid pro řádek nezanořovat do datagridu tabulky, ale vytvořit ho paralelně vedle tabulkového datagridu. Myslím, že zanoření žádné výhody nepřinese, jenom komplikace.
- Martin Vágovszký
- Člen | 14
Ano, souhlas. Když se na ten kód dívám asi bude opravdu lepší to přepsat.
Čili když mou myšlenku zobecním a zjednodušším:
Nette komponentový model sice z principu toto umožňuje, ale není
správně to takto použít (myšleno komponenta která obsahuje
formulář uvnitř jiné komponenty která obsahuje formulář).
- m.brecher
- Generous Backer | 837
komponenta která obsahuje formulář uvnitř jiné komponenty která obsahuje formulář
Myslím že nejde jenom o to že se tam vnořují formuláře, datagrid řídí vykreslení tabulky a asi je lepší, aby neřídil jiný datagrid, bez ohledu na ty formuláře, je to myslím nejjednodušší když budou nezávislé.
- stepos2
- Člen | 53
m.brecher napsal(a):
Myslím že nejde jenom o to že se tam vnořují formuláře, datagrid řídí vykreslení tabulky a asi je lepší, aby neřídil jiný datagrid, bez ohledu na ty formuláře, je to myslím nejjednodušší když budou nezávislé.
Vnořování komponent do jiných je základní kámen Nette aplikace. I presenter je komponenta. To že vnoříš jednu do druhé neznamená, že jsou na sobě závislé. V HTML sice nemůže být fomulář v jiném formuláři, ale jinak je vnořování komponent úplně ok.
Editoval stepos2 (11. 12. 2023 18:40)
- ZahorskyJan
- Člen | 55
Takový workaround, který s ublaboo datagridem děláme je, že ty formuláře vykreslujeme v modálním okně. “Kouzlo” je v tom, že datagrid obsahuje v buňce jen trigger a kód samotného modálního okna s jeho obsahem (další formulář), je mimo datagrid. Ideální by bylo, kdyby ublaboo inline edit řešil jinak než tím, že celou tabulku zabalí do formuláře, ale to je velký zásah a logika by se musela víc přesunout do JS, což chápu, že už by komplikovalo použití balíčku, když má každý na projektu různý stack.