Kam vložit signál formuláře

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

Ahoj,

mám vytvořený formulář jako samostatnou třídu \Nette\Aplication\UI\Form a zajímalo by mě, kam vložit správně signál pro zpracování formuláře. Dle mého je z hlediska znovu použitelnosti kódu špatné psát signál ve třídě a měl by být v presenteru. Jaká je vaše praxe?

Ot@s
Backer | 476
+
0
-

Moc tomu co píšeš nerozumím, ale zde je asi to, co hledáš.

Editoval Ot@s (4. 6. 2012 9:38)

newPOPE
Člen | 648
+
0
-

Mas na mysli callback ktory sa zavola po odoslani formu predpokladam?.

Kazdy ho pise tam ako sa mu paci (niekto priamo v tej triede …Form, ja osobne do presenterov). O tom co je lepsie je dlha debata :-) (Mozna poradi kuci z @medioCZ ;-)).

Tomáš Jablonický
Člen | 115
+
0
-

Jo mám namysli callback … již jsem se setkal, kdy stejný formulář musí v různých případech po zpracování dat dělat něco jiného (například v jednom presenteru přesměrovat se na this ve druhém se přesměrovat třeba na výpis) .. z toho důvodu si myslím, že by se callback měl psát v presenteru nebo ve třídě formuláře a pak ho případně přepsat v presenteru.

Filip Procházka
Moderator | 4668
+
0
-

@**jablon**: tohle velice elegantně řešil tuším @**Tharos**. Formulář do jedné třídy, handler do další třídy. Nevím jak to měl on, ale tohle by pro tebe mohl být dobrý základ.

abstract class FormHandler extends Nette\Object
{
	public function __invoke($element)
	{
		$this->process($element);
	}
}

class MyForm extends Nette\Application\UI\Control
{
	protected function createComponentForm()
	{
		$form = new Nette\Application\UI\Form;
		// ...

		// handler přídáš třeba v presenteru
		// $form->onSuccess[] = new MyFormHandler($myModel);

		return $form;
	}

	public function render()
	{
		echo $this['form'];
		// nebo šablona
	}
}
juzna.cz
Člen | 248
+
0
-

Do onSuccess muzes davat vic callbacku, ne? Takze tu cast, co souvisi s formularem, primo do nej; druhou cast, co souvisi s prezentacni vrstvou, do presenteru.