Samostatné použití a více formuláře na stránce validuje všechno

Kcko
Člen | 465
+
0
-

Ahoj,

na starý projekt, dodělávám jednu sekci a chtěl jsem si ulehčit práci pomocí Nette doplňků, tak jsem si tam hodil Nette formuláře a nyní zjištuji, že jsem si práci asi spíše přidělal a nevím jestli je to něčím co já nevím nebo dělám něco špatně nebo to tak prostě je.

Jakmile na jedné stránce použiji víc než 1 formulář, tak se pak nějak odesílají resp. validují všechny. (Odešlá formulář B a validuje se i A).

Vzal jsem si z examples basic příklad a lehce ho upravil a tam se to děje taky, a to jsem upravil i názvy prvků a kontejnery pro případnou kolizi viz kód https://pastebin.com/mmPbYkP8 a screenshot při kliku a první form se validuje i druhý https://goo.gl/fVgJCF

Co s tím, dá se to nějak upravit / nastavit?

F.Vesely
Člen | 368
+
+1
-

Podminka if ($form->isSuccess() && $_POST['first']['a']) nejdrive validuje a pak teprve zjistuje, jestli byl form vubec odeslan. Kdyz to prohodis na if ($_POST['first']['a']) && $form->isSuccess(), tak to bude fungovat spravne. Jeste abys nemusel sahat na $_POST, tak muzes pouzit $form->isSubmitted()

Kcko
Člen | 465
+
0
-

F.Vesely napsal(a):

Podminka if ($form->isSuccess() && $_POST['first']['a']) nejdrive validuje a pak teprve zjistuje, jestli byl form vubec odeslan. Kdyz to prohodis na if ($_POST['first']['a']) && $form->isSuccess(), tak to bude fungovat spravne. Jeste abys nemusel sahat na $_POST, tak muzes pouzit $form->isSubmitted()

Pokud prohodím podmínky tj

if ($_POST[‚first‘][‚a‘] && $form->isSuccess()) { … }
if ($_POST[‚second‘][‚b‘] && $form2->isSuccess()) { … }

Tak se to konečně chová jak má, pokud místo sahání do $_POST dat použiji isSubmitted() tak to funguje opět špatně odeslání druhého formuláře se mi validuje i první

Screenshot: https://goo.gl/p4B711
Upravený kód: https://pastebin.com/AP7qZ134

Co je tedy špatně? (Přežiju sahání do raw POST dat), ale zajímá mě to.

Nette forms 2.3

Editoval Kcko (14. 1. 2018 10:16)

David Matějka
Moderator | 6445
+
+5
-

predej do konstruktoru Formu parametr $name, pak to dokaze zjistit, ktery formular je ktery.

Kcko
Člen | 465
+
0
-

David Matějka napsal(a):

predej do konstruktoru Formu parametr $name, pak to dokaze zjistit, ktery formular je ktery.

Jako vždy správně :-), mohlo mě to taky napadnout, moc díky Davide.