Jedna funkce createComponentForm() pro více formulářů na stránce

DETAIL
Člen | 33
+
0
-

Ahoj

udělal jsem si v HTML acordeon, kde chci vypisovat nastavení a možnost úpravy pro x zařízení (počet zařízení není pevný). Každé zařízení má stejný formulář, jenom se má lišit hiddenID. A nevím jak to udělat dynamicky.
Jde o základní inputy. Chci aby na to fungovalo i NetteForm a aby to šlo poslat přes NAJU.

Děkuji za rady.

Editoval DETAIL (5. 7. 2021 11:28)

jiri.pudil
Nette Blogger | 1032
+
0
-

Ahoj, myslím, že hledáš multiplier

DETAIL
Člen | 33
+
0
-

Moc děkuju,
to bude asi ono.
Rozumím tedy tomu, že vlastně mám použít místo toho formuláře co mám tento

protected function createComponentDeviceForm(): Multiplier
{...
$form->addHidden('itemId', $itemId);

A v latte použít ten foreach a {control „shopForm-$item->id“}, problém ale je, že já nepoužívám generování toho formuláře, ale mám přímo html a v něm n:form=„DeviceForm“, dá se to použít i takto?

Editoval DETAIL (5. 7. 2021 14:56)

jiri.pudil
Nette Blogger | 1032
+
0
-

Mělo by to myslím fungovat obdobně:

<form n:form="DeviceForm-$item->id">
DETAIL
Člen | 33
+
0
-

Ok zkusím, ještě doplním že tj

<form n:name="">

jsem to tam napsal blbě :D

Editoval DETAIL (5. 7. 2021 17:00)

DETAIL
Člen | 33
+
0
-

No mám problém, že sice formulář se načte správně, ale jakmile dám Uložit, tak se načte stránka znovu a v URL je toto
..&_do=formChangeCoordinates-3-submit#
Ale nic to neudělá

    protected function createComponentFormChangeCoordinates(): Multiplier
    {
        return new Multiplier(function ($ID_stanoviste) {
            $form = new Form;
			//...
            $form->addSubmit('save', 'Uložit');
            $form->onSuccess[] = [$this, 'formChangeCoordinatesSucceeded'];

            return $form;
        });
    }
    public function formChangeCoordinatesSucceeded(Form $form, $data): void
    {
        Debugger::dump($data);
    }

Editoval DETAIL (5. 7. 2021 17:52)

DETAIL
Člen | 33
+
0
-

Tak problém jsem vyřešil.
Měl jsem dva formy v sobě a nevšiml jsem si toho. Nevím ani jestli je to validní.

<form class="mt-4 mb-2">
    <form n:name="formChangeCoordinates-{$x}" class="php-email-form">

Jinak díky za ten multiplier.. funguje

Editoval DETAIL (6. 7. 2021 18:55)