Formuláře: špatná detekce odesílacího tlačítka

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
romansklenar
Člen | 655
+
0
-

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?

David Grudl
Nette Core | 8145
+
0
-

Ten design vypadá strašně pěkně. Mužů se zeptat, odkud máš ikonky?

Honza Marek
Člen | 1664
+
0
-

Silk icon set…

romansklenar
Člen | 655
+
0
-

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).