Signal receiver u přetěžovaných komponent

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

Ahojte,

podle této diskuze vyrábím přetěžované komponenty:

public function createComponentEditDescriptionForm($id) {

	$form = new Nette\Application\UI\Form();
	$form->addText('description', 'Popis');
	$form->addSubmit('submit', 'Vytvořit nový obor');
	$form->onSuccess[] = callback($this, 'editDescriptionFormSubmitted');

	return $form;
}

public function renderDefault() {

	foreach ($array as $description) {
		$this['editDescriptionForm' . $description->id] = $this->createComponentEditDescriptionForm($description->id);
	}

}

a v latte už vytvářím componenty takto:

{foreach $descriptions as $id => $description}
	{control "editDescriptionForm$id"}
{/foreach}

Problém je, že po submitu formuláře mi nette vyhodí, že
The signal receiver component ‚editSpecializationForm1‘ is not found.,
i když příslušná metoda existuje:

public function editDescriptionFormSubmitted(Nette\Application\UI\Form $form) {

	$values = $form->getValues();
	...
}

Co bych měl kam přidat, aby to makalo?
Když nepřetěžuju componenty, ona metoda po submitu se zavolá.

Díky

mkoubik
Člen | 728
+
+1
-

Zpracování signálu probíhá ještě před render metodou, takže ty komponenty v té době neexistují. Původní vlákno jsem nečetl, ale pokud chápu správně o co se snažíš tak by se ti spíš hodil Multiplier.