Samostatné použití a více formuláře na stránce validuje všechno
- Kcko
- Člen | 468
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 | 369
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 | 468
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 naif ($_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
predej do konstruktoru Formu parametr $name
, pak to dokaze
zjistit, ktery formular je ktery.