Formuláře Jak řešit edit produktů v administraci

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

Dobrý den,
právě řeším tento problém:
Mám z databáze výpis produktů, kde každý z nich má své informace (název, cena) v input polích formuláře.
Změnou hodnoty input pole a odesláním formuláře (submit tlačítko edit) chci v databázi aktualizovat údaje o produktu.
Napadlo mě více možností, ale u každé z nich vidím problém, co je optimální?

  1. každý produkt má vlastní formulář, tedy vlastní submit tlačítko edit
  2. všechny produkty jsou v jednom formuláři, kde každý produkt je container a má vlastní submit (edit) tlačítko
  3. řešení jako b, ale pouze jedno submit tlačítko dole

u řešení 1) nevím, jak bych zavolal metodu na obsluhu formuláře pro správný produkt (podle id) – nevím jak rozlišovat submit tlačítka – dá se jim nějak přidat atribut – například id?

u řešení 2) nevím, jestli lze zjistit, které inputy se změnily a do databáze aktualizovat pouze je, nebo jestli to musím kontrolovat podle databáze

Pokud jsou všechny metody co jsem napsal špatně, jaké je ideální řešení?

premek_k
Člen | 172
+
0
-
Tabetha
Člen | 140
+
0
-

na 1. bod ti pomôže multiplier ak som to dobre pochpil

noodle
Člen | 9
+
0
-

Ok, díky, multiplier byl přesně to co jsem chtěl.
Teď ještě jeden dotaz spíše ze zajímavosti, u každé komponenty vytvořené pomocí multiplier bych chtěl v formuláři vykreslit pomocí setDefaultValue v input poli formuláře hodnotu z databáze, kterou chci editovat.
Musím pro každou vytvářenou komponentu multiplierem tzn. pro každý produkt provést dotaz do databáze, nebo to lze udělat elegantněji pomocí jednoho společného dotazu pro všechny komponenty?

Jan Mikeš
Člen | 771
+
0
-
$rows = $table->select("xxx")->fetchPairs();

a potom si cele pole predas pomoci use $rows do multiplieru a primo v jednotlivych instancich muzes pouzivat takto:

$form->addText("xxx")->setDefaultValue($rows[$id]->someValue);

Psano z hlavy, tudiz nemusi byt presne vse spravne ale jde o princip ktery by mel fungovat.