Problémy s ajaxovým formulářem
- mlha
- Člen | 58
Používám formulář který je obalený \Nette\Application\Control, abych ho mohl zobrazovat a odesilat AJAXově. Formulář otevírám pomocí signálu z DataGridu, který zároveň posílá parametr id.
Problém č.1
Abych se dostal k tomu parametru, musím nejprve componentu formuláře přidat
do presenteru
Problém č.2
Na hodnotě parametru je závislá nabídka hodnot v selectboxu. Takže
vytvoření selectboxu a dalších částí formuláře musí být až
po…?!
SelectBox pak vraci NULL, ale o tom jsem se již něco dočetl zde
Problém č.3
Jak se dostanu k flashovým zprávám formuláře? Potřebuji zjistit, že
formulář nebyl správně vyplněn a zareagovat jeho NEzavřením a zobrazením
hlášek.
Editoval mlha (29. 6. 2010 13:03)
- mlha
- Člen | 58
Varianta vytvoření formuláře A)
Formulář je nejprve přidán do presenteru a až pak se vkládají
formulářové prvky a nastavují callbacky.
Tato varianta „funguje“, ale po jeho odeslání se nespustí ani
„editItemFormSubmited“ ani „editItemFormError“.
Varianta vytvoření formuláře B)
Oproti předchozí variantě jsou callbacky definovány před vložením
formuláře do presenteru.
Tato varianta „funguje“, po jeho odeslání se spustí
„editItemFormSubmited“, ale $values = $form->getValues(); je prazdné a i
$form[‚item‘]->getRawValue() nefunguje.
Varianta vytvoření formuláře C)
Zde jsou všechny formulářové prvky a callbacky definovány před
vložením formuláře do presenteru.
Tato varianta „funguje“, po jeho odeslání se spustí
„editItemFormSubmited“, ale $values = $form->getValues(); obsahuje item =
NULL. K původní hodnotě se lze dobrat přes
$form[‚item‘]->getRawValue().
Bohužel v této variantě se nedaří změnit Label comboboxu – zůstává
původní ‚temptext‘. Každopádně se tato varianta nejvíce blíží
ideálnímu stavu.
- mlha
- Člen | 58
bazo napsal(a):
vo formulari sa nepouzivaju flash spravy, ale errory sa vypisuju priamo vo formulari. flash messages sa zobrazuju predsa v sablonach
Pokud se dostanu do handleru pro spracovani formuláře, tak si případné vlastní hlášky posílám do Datagridu, který beztak překresluju. Pokud ale není formulář korektně vykreslen, tak se hlášky generují v Nette a jdou buhví kam.
Takže konečně jsem se dostal do chyboveho handleru a tam zajistil aby se formulář neukryl. Tím se mi konečně zobrazila flashMessage.
bazo DĚKUJU!!!
Akorát ten formulář není v původním stavu. Zřejme nedošlo k přenesení parametrů, které měl při vytvoření.
A stále řeším problém viz. předchozí příspěvek.
Editoval mlha (29. 6. 2010 15:01)