Vícetlačítkový ajaxový formulář neinvaliduje snippety na funkci onClick[]

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
KillPrd
Začátečník | 110
+
0
-

mám formulář a v něm mám 3 tlačítka

<?php
$form->addSubmit('save', '.')->onClick[] = callback($this, 'registerForm_register_save');
			$form->addSubmit('savecopy','..')->onClick[] = callback($this, 'registerForm_register_copy');
			$form->addSubmit('savenew','...')->onClick[] = callback($this, 'registerForm_register_new');
?>

zpracování formuláře je takto :

<?php

public function registerForm_register_copy($form)
    {
       $values = $form->values;
	   if($this->isAjax()){
	    $this->flashMessage('Zadání je nesprávné','error');
	 	 $this->invalidateControl();
	   }

?>

při klasickém odeslání formuláře mi invaliduje snipet a vše funguje jakmile změní na onClick abych detekoval tlačítko neinvaliduje. :( a dá se nějak jinak detekovat tlačítko submit? funkce isSubmitedBy() mi tlačítko nedetekovala :(

Morfeo21
Člen | 35
+
0
-

Pro detekci tlačítka zkus:

$submitButton = $form->isSubmitted();
$name = $submitButton->name;

A nechybí ti tam název snippetu, který se má invalidovat?

Editoval Morfeo21 (4. 9. 2011 0:30)

KillPrd
Začátečník | 110
+
0
-

Tak to taky ne. tohle vrací pouze TRUE/FALSE instance name tam není čímž nedetekuji správný button tedy stále nevím jak donutit po funkci onClick[] = callback($this, ‚registerForm_register_save‘);
invalidaci snippetu :( nebo detekovat submit button
hledám už druhej den kde by mohla být chybka.
zkoušel jsem funkci isSubmittedBy(). na tuto funkci mi to vrací bool(false);

<?php
$submitButton = $form['savecopy']->isSubmittedBy();
var_dump($submitButton);
?>

Editoval KillPrd (4. 9. 2011 9:41)

KillPrd
Začátečník | 110
+
0
-

Tak vyřešeno taková maličkost.
onClick[] se provede PŘED onSuccess[] a já jsem dal všude onClick a zrušil jsem onSuccess tím pádem to je špatně a proto se to neinvaliduje. tedy jestli jsem to správně pochopil tak se defakto provednou dvě funkce onClick a následně onSuccess a v onClick se pouze provedou věci navíc co potřebuji…