Komponenta s formulářem uvnitř jiného formuláře

Martin Vágovszký
Člen | 14
+
0
-

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 | 758
+
0
-

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
+
0
-

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 | 758
+
0
-

@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
+
0
-

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 | 758
+
-1
-

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 | 51
+
+1
-

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
+
0
-

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.

steelbull
Člen | 240
+
0
-

form do formu nie je správne a vhodné zanárať, tiež som to riešil v tomto prípade cez modal alebo druhá možnosť obaliť form nejakou inou komponentou, do ktorej by sa pridal druhý formulár, aby namiesto zanorenia boli vedľa seba