Udržení parametru komponenty i po odeslání formuláře

roman.campula
Člen | 60
+
0
-

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}
CZechBoY
Člen | 3608
+
0
-

Zkus přesunout kod z renderShow do actionShow.

roman.campula
Člen | 60
+
0
-

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).