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
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
udelej si na komponente vlastni event, ktery vyvolas s cim potrebujes