Nevalidni formular a invalidate na komponentu ve ktere se nachazi

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

Ahoj,

mam formular zpracovany jako komponentu. Pokud je formular odeslany, volam ve fci, ktera odeslani zachycuje $this->invalidateControl(‚jmenoKomponentyFromulare‘); a vse funguje jak ma – vygeneruje se html formulare a vrati jako snippet.

Problem je, pokud je formular nevalidni, v takovem pripade se vubec do te fce, ktera zpracovava formular po odeslani nedostanu, nezavola se $this->invalidateControl(‚jmenoKomponentyFromulare‘) a dojde k chybe pri vytvoreni html snippetu. Jak toto tedy resit, kam umistit to $this->invalidateControl(‚jmenoKomponentyFromulare‘) aby se to volalo i v pripade nevalidniho formulare?

Napadlo me dat do konstrukotu komponenty formulare: if ( $this->getPresenter()->isAjax() ) { $this->invalidateControl(‚signIn‘); }, ale to by znamenalo, ze se komponenta znevalidni a zbytecne generuje i v pripade, kdy se v ni nic nezmeni jen prozo, ze je volana z nejake sablony. Coz trochu potira smysl tech invalidaci celkove.

Diky.V.

jtousek
Člen | 951
+
0
-

Co takhle použít událost $onInvalidSubmit?

// psáno narychlo takže je to spíše nástřel...
function createComponentForm() {
	//...
	$form->onInvalidSubmit[] = function () use ($form) {
		$form->getPresenter()->invalidateControl($form->getName());
	};
	return $form;
}

Editoval jtousek (17. 4. 2011 23:06)