Udržení parametru komponenty i po odeslání formuláře
- roman.campula
- Člen | 60
Zdravím,
mám takový problém s předáváním parametrů v komponentě. Mám obecnou
komponentu na odesílání e-mailů vytvořenou v BasePresenter. Může jich
být na stránce více, proto používám Multiplier.
V presenteru, kde chci komponentu (formulář) zobrazit, nastavím komponentě požadovaný e-mail uživatele. Nechci to nastavovat ve formuláři, aby nebylo možné pole přepsat v HTML kódu. Dosud je to OK, komponenta má nastaven správný cílový e-mail. Jakmile však formulář odešlu, hodnota cílového e-mailu se ztratí (resp. inicializuje na obecný e-mail). Jak tam tu proměnnou ve tvaru e-mailu uživatele udržet?
Děkuji za pomoc
BasePresenter:
function createComponentMessageControl() {
return new Nette\Application\UI\Multiplier(function ($controlId) {
$messageControl = $this->messageControlFactory->create($this->actualPresenter, $controlId);
$messageControl->setRecipientEmail($this->parameters->email); // nastaveni obecne adresy
return $messageControl;
});
}
MessageControl:
...
private $recipientEmail;
public function setRecipientEmail($recipientEmail) {
$this->recipientEmail = $recipientEmail;
}
function createComponentForm() {
... // zde je nastaveno $this->recipientEmail spravne, tedy na adresu uzivatele
$form->onSuccess[] = [$this, "formSucceeded"];
...
}
function formSucceeded($form, $values) {
... // zde je nastaveno $this->recipientEmail CHYBNE, tedy na obecnou adresu
}
...
UsersPresenter:
function renderShow($id) {
$user = $this->usersFacade->getById($id);
$this["messageControl-main"]->setRecipientEmail($user->email); // nastaveni adresy uzivatele
}
Users/show.latte:
{control messageControl-main}
- roman.campula
- Člen | 60
Bohužel beze změny, po odeslání formuláře hodnota
$this->recipientEmail
není nastavena ani v jednom místě, kde
je komentář (výše).