Form onSuccess nefunguje při manuálním vykreslení
- krust
- Člen | 14
Zdravím, chci kvůli stylování vykreslovat formulář manuálně, přes
tagy {form formular} a {input …}/{label …}
Formulář se vykreslí hezky, nicméně $form->onSuccess[] funkce se
neprovede. V případě, že formulář vykreslím „klasicky“ přes
{control formular}, tak onSuccess metoda funguje normálně. Řešil tohle
někdo z vás?
Děkuji
- krust
- Člen | 14
$form = new Form;
$form->addText('psc','PSČ')
->setAttribute('class', 'form-control')
->setAttribute("placeholder","zadejte PSČ");
$form->addText('obec','Obec')
->setAttribute('class', 'form-control')
->setAttribute("placeholder","zadejte obec");
$form->addText('ulice','Ulice')
->setAttribute('class', 'form-control')
->setAttribute("placeholder","zadejte ulici");
$form->addText('jmeno','Jméno')
->setAttribute('class', 'form-control')
->setAttribute("placeholder","zadejte jméno");
$form->addText('max','Maximální počet')
->setAttribute('class', 'form-control')
->setAttribute("placeholder","maximální počet");
$form->addSubmit('hledat','Hledat')
->setAttribute('class','btn btn-info waves-effect waves-light');
$form->onSuccess[] = [$this, 'formularSucceeded'];
return $form;
a pak
public function formularSucceeded($form){
$values = $form->getValues();
print_r($values);die();
}
v latte mám dlouhým html kódem nastylovaný formulář, ale ve zkratce:
{form formular}
<div>
{label mesto}
{input mesto}
</div>
{input hledat}
{/form}
a pak ten stejný formulář vykresluji pomocí tagu
{control formular}
Ten první nezavolá onSuccess, ten druhý ano. První udělá jen refresh stránky, druhý udělá die a vypíše hodnoty z formuláře
- Kamil Valenta
- Člen | 822
Pravděpodobně je chyba ukrytá mimo „ve zkratce“. Pošli prosím větší kus té šablony, zřejmě jsi chybu vypustil jako nedůležitou část kódu.
Také bych si v šabloně dumpnul {$form->getErrors()}
a uvidíš, zda nechybí nějaké povinné pole. Např u selectu.
Ale pokud platí definice, cos poslal, tak tam select ani required
pole není…
- Šaman
- Člen | 2667
@krust Fungovat by to mělo. Někde je zakopaná chyba. Doporučuji
zkusit to odladit na primitivním testovacím formuláři. Nezapomeň na
nějaké základní vypsání chyb (při použití
{control formName}
se chyby vypíšou, při manuálním to musíš
udělat sám). OnSuccess se totiž spustí jen v případě, že formulář byl
úspěšně zvalidován.