Validace formuláře – callbacky

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

Ahoj,
mám formulář se dvěma tlačítky „Uložit“ a „Smazat“:

$form->addSubmit('save', 'Uložit')
  ->onClick[] = $this->contractEditFormSaved;

$form->addSubmit('delete', 'Smazat')
  ->setValidationScope(NULL)
  ->onClick[] = $this->contractEditFormDeleted;

A dále definován callback pro validaci formuláře:

$form->onValidate[] = $this->contractEditFormValidated;

Všimněte si, že tlačítko „Smazat“ má definováno, že se nemá validovat. Tím docílím toho, že se jednak nespustí javascriptová validace (nepotřebuji kontrolovat povinné položky, když se má záznam smazat), ale přesto bych chtěl validovat na straně serveru (aplikační logika – vazba záznamu na jiné záznamy apod.).

Dá se nějak nastavit, aby se callback onValidate volal i na tlačítku, které má explicitně uvedeno setValidationScope(NULL)? Vím, že můžu validaci provést v callbacku onClick, ale rád bych od sebe oddělil validační metodu od té, která již provede nějakou akci (uložení do databáze apod.). Zkoušel jsem onInvalidClick[], ale ta se nespustí.

Ideální by byl callback onValidate na konkrétním tlačítku, ten ale Nette nepodporuje.

Díky

Felix
Nette Core | 1245
+
0
-

Myslim, ze by ti mohl pomoct $f->onSubmit[], ale to se ti zavola kdykoli po odeslani no.

radas
Člen | 225
+
0
-

No právě, to nechci. Rád bych měl kód logicky rozdělený – validaci zvlášť a provedení nějaké akce, kde už budu vědět, že jsou validní data.