Po přesměrování injektovaný model ztrácí data uložená v počátečním presenteru
- Mooore
- Člen | 13
Ahoj, prosím o pomoc s tímto problémem. Mám presenter, do kterého si injektuji modelovou třídu. S modelem různě pracuji a potřebuji do něho uložit nějaká data. Poté potřebuji se potřebuji přesměrovat na druhý presenter (ve kterém také proběhne injekt) a pracovat s daty uloženými v prvním presenteru.
Pokud jsem pochopil správně, nette vytváří pouze jedinou instantci modelu jako službu, tedy singleton. Takže by si instance měla data pamatovat.
První presenter:
<?php
class AppPresenter extends BasePresenter
{
/** @var \App\Model\ApplicationModel @inject */
public $appModel;
public function actionRunApplication()
{
$userData = $this->getUser()->getIdentity()->getData();
$this->appModel->name = "Přihlášen: ".$userData['firstname']." ".$userData['lastname']." (admin)";
$this->redirect('Administration:default');
//$this->renderShow();
}
}
?>
Přitom když zkusím nepřesměrovávat, a vypustit hodnotu do šablony z proměnné v modelu přímo tady, tak se vše správně vykreslí.
Druhý presenter:
<?php
class AdministrationPresenter extends BasePresenter
{
/** @var \App\Model\ApplicationModel @inject */
public $appModel;
public function renderDefault() {
$this->template->name = $this->appModel->name;
}
}
?>
Zde již v proměnné name již nic není.
- Mooore
- Člen | 13
Freema napsal(a):
To si bude pamatovat ale jen v tom requestu co tu instanci děláš. Když tam dáš redirect je to nový request a všechno se zahodí. Tohle musíš uložit do DB nebo Session nebo si to předat přes GET,POST.
Áha, jasně, dal jsem tam místo redirect() funkci forward() a už to jede. Díky moc.