Kam vložit signál formuláře
- Tomáš Jablonický
- Člen | 115
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?
- Tomáš Jablonický
- Člen | 115
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
@**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
}
}