Předávání výstupů mezi několika onSuccess[]

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

Dobrý den,
je možné nějak předávat výstupy z několika metod onSuccess mezi sebou?
Mám komponentu obalující formulář, ta provede základní uložení výstupu z formuláře, ale rád bych aby komponenta vrátila svůj výstup zpět do presenteru.

Ukázka bude mluvit sama zasebe.

//presenter
protected function createComponentProfile(){
	$control = new ProfileControl(...);
	$control['form']->onSuccess[] = $this->profileSuccess;
	return $control;
}
public function profileSuccess( UserEntity $user ){
	//tady bych chtěl mít k dispozici výstup z předchozího onSuccess
}

//komponenta
class ProfileControl extends \Nette\Application\UI\Control {
	public function render(){
		$this['form']->render();
	}
	protected function createComponentForm(){
		$form = new Form();
		$form->addText('name','Jméno:');
		$form->addText('surname','Příjmení:');
		$form->addText('city','Město:');
		$form->addSubmit('submit', 'Uložit');
		$form->onSuccess[] = $this->formSuccess;
		return $form;
	}
	public function formSuccess( Form $form ){
		$values = $form->getValues();
		$user = new UserEntity( $values );

		try {
			$this->model->save($user);
			return $user; // tady si nevím rady
		}
		catch ( PDOException $e ){
			$form->addError($e->getMessage());
		}
	}
}

Metoda presenteru profileSuccess stále dostává vstup typu Form, je možné nějak lehce nastavit aby dostávala UserEntity? Nebo si musím tento výstup nastavit přímo v komponentě a né na samotném formuláři?

David Matějka
Moderator | 6445
+
+1
-

udelej si na komponente vlastni event, ktery vyvolas s cim potrebujes

jEhLa
Člen | 70
+
0
-

Tak už jsem to již řešil. Jen mě napadlo jestli by se to nedalo jinak.
To musím ale tedy pokaždé v metodě formSuccess volat onSuccess na komponentě?

Editoval jEhLa (24. 9. 2014 15:02)