Jak z komponenty dat vedet presenteru, co se stalo za akci
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Ja
- Člen | 260
Ahoj,
pouzivam newsletter formular jakozto komponentu, v ramci ji i newsletterove
emaily zpracovavam, problem je tato cast:
<?php
if($this->newsletter->findBy($values)) { // zaznam jiz existuje, takze email smaze
$this->newsletter->deleteBy($values);
}
else{ // zaznam neexistuje, takze email prida
$this->newsletter->save($values);
}
?>
presenter se pak stara o presmerovani v pripade onSuccess:
<?php
protected function createComponentNewsletterForm()
{
$form = $this->newsletter_form_factory->create();
$form->onSuccess[] = function ($form) {
// zde zjistit co se stalo a vypsat adekvatni flash message
$form->getPresenter()->redirect('default');
};
return $form;
}
?>
chtel bych vypsat flashmessage podle toho, zda email byl smazan nebo pridan, ale nevim jak si z komponenty tuto informaci vytahnout. Jak byste to prosim resili vy, jake je best practice?
Diky
- Ja
- Člen | 260
Nedari se mi to nejak naroubovat na tu tovarnicku, uz jsem to zkousel ale pohorel jsem. Mohl bys dat prosim jeste maly hint?
Tovarna je definovana klasicky:
<?php
class NewsletterFormFactory extends Object
{
/** @var Newsletter */
private $newsletter;
public function __construct(Newsletter $newsletter)
{
$this->newsletter = $newsletter;
}
// atd atd
?>
- David Matějka
- Moderator | 6445
formular jakozto komponentu
A kde mas tu komponentu?
a ta prvni cast kodu, tu mas kde?
- Ja
- Člen | 260
Jestli rozumim dobre tve otazce tak komponentu normalne vytvarim v presenteru, newsletter_form_factory Nette vstrikuje do presenteru samo.
<?php
protected function createComponentNewsletterForm()
{
$form = $this->newsletter_form_factory->create();
$form->onSuccess[] = function ($form) {
// zde zjistit co se stalo a vypsat adekvatni flash message
$form->getPresenter()->redirect('default');
};
return $form;
}
?>