Dynamicky select ve formulari v nette 3

Hugo
Člen | 6
+
0
-

Zdravim,
jak nejlip vyresit dynamicky vygenerovany select ve formulari ?
onError hazi chybu „Please select a valid option“
Zkousel jsem odchytit formular pred validaci v eventu „onValidate“ a
nejak tu hodnotu tam hacknout.

$form->getHttpData() mi vrati hodnotu selectu ale nenasel jsem zpusob
jak ji forcnout tak aby ji pak nasledne vratila i metoda $form->getData();

za pripadne nasmerovani dekuji

h.

Šaman
Člen | 2635
+
0
-

Pošli kód, jinak netušíme kde máš chybu.

Hugo
Člen | 6
+
0
-

Tak jsem to nakonec vyresil pres setValidationScope[] a zrusil validaci daneho prvku, vypada ze to funguje. Existuje nejake vic sofistikovane reseni ?

dik

h.

Hugo
Člen | 6
+
0
-

Šaman napsal(a):

Pošli kód, jinak netušíme kde máš chybu.

Kod je bohuzel moc slozity a dlouhy na to abych to tady daval. Pointa byla v tom ze jsem ve formulari
mel select ktery mel jenom jednu hodnotu a zbytek se generoval pres javascript. Nette si po odeslani formulare kontroluje jestli select nema hodnotu mimo puvodne zadany staticky rozsah – predpokladam ze se jedna o nejake zabezpeceni. Reseni bylo vypnout automatickou validaci na select a resit si validovani rucne. Ted to funguje :)

h.

Šaman
Člen | 2635
+
+1
-

To není čisté řešení. $form->getHttpData() vrací surová data, $form->getData() právě hlídají, že ti tam někdo nepodstrčil možnost mimo rozsah.
Řeší se to tak, že se znovu nastaví dynamické možnosti v createComponent, nebo v action/handle metodě (tedy i po odeslání formuláře tam ty možnosti jsou). Je také možné pak formulář předvyplnit (třeba v případě editačního formuláře).

Hugo
Člen | 6
+
0
-

Šaman napsal(a):

To není čisté řešení. $form->getHttpData() vrací surová data, $form->getData() právě hlídají, že ti tam někdo nepodstrčil možnost mimo rozsah.
Řeší se to tak, že se znovu nastaví dynamické možnosti v createComponent, nebo v action/handle metodě (tedy i po odeslání formuláře tam ty možnosti jsou). Je také možné pak formulář předvyplnit (třeba v případě editačního formuláře).

dik za nasmerovani, mrknu na to :)

h.