Formuláře: špatná detekce odesílacího tlačítka
- romansklenar
- Člen | 655
Pokud mám následující formulář, kde pro více odesílacích tlačítek použiju jeden handler, a formulář odešlu přes tlačítko ‚submit2‘ tak dojde ke špatné detekci.
Reprodukční kód:
$form = new AppForm($this, $name);
// ...
$form->addSubmit('submit1', 'Provést')
->onClick[] = array($this, 'handler');
$form->addSubmit('submit2', 'Provést')
->onClick[] = array($this, 'handler');
public function handler(SubmitButton $button)
{
$form = $button->getParent();
$b1 = $form['submit1']->isSubmittedBy(); // FALSE
$b2 = $form['submit2']->isSubmittedBy(); // FALSE
$s = $button->getName(); // submit1
}
Abych předešel zbytečným dotazům „K čemu to?“:
Jde o grid, který má mít (podobně jako je na gmailu například) lištu
akcí nad tabulkou i pod tabulkou. Na $form->onSubmit[]
mám
handler na zpracování filtrů (protože budou nejčastěji odesílány
klávesou enter a které na obrázku nejsou), které si obsluhuje
přímo grid.
EDIT: …hmm klasika… hned co jsem to postnul jsem na to přišel… Chyba se vyskytuje jen při ajaxovém odeslání, takže to nijak nesouvisí s Nette, je to spíš otázka na Honzu protože používám jeho ajaxový driver – nevíš v čem by mohl být zakopaný pes?
- romansklenar
- Člen | 655
Jak píše Honza, jen doplním odkaz.
EDIT: Vyřešeno, špatně zaregistrovány události na odeslání tlačítka (místo click tam viselo submit).