Po přesměrování injektovaný model ztrácí data uložená v počátečním presenteru

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Mooore
Člen | 13
+
0
-

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

Freema
Člen | 18
+
+3
-

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.

Mooore
Člen | 13
+
-1
-

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.