Globální proměnná v presenteru

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

Začátečnický problém.

Mám presenter a v tom vytvářím dva formuláře.

<?php
class AdminPresenter extends \App\Presenters\BasePresenter
{
    public $global_Id;

protected function createComponentAForm() {}
protected function createComponentBForm() {}
}
?>

Ve formuláři A si vytáhnu data z databáze a uložím si je do $global_Id (třeba číslo). No a chtěl bych to použít i ve formuláři B. Proč podruhé číst databázi, když už ty data mám, že?
Je to takto možné udělat? Nebo to jde líp?
Když ve formuláři B $global_Id prostě použiju (zkoušel jsem i variantu global $global_Id) tak mě to nefunguje. Proměnná je prázdná.

Prosím o radu či nasměrování. Díky

Marek Šneberger
Člen | 130
+
-2
-

Co si třeba udělat privátní metodu na nastavování / získávání té property?

private function getGlobalId()
{
	if ($this->global_id !== NULL) {
		return $this->global_id;
	}
	$this->globalId = $this->nejakaSluzba->najdiDataProGlobalId();
	return $this->globalId;
}

A tu volat v obou formulářích?

Editoval Marek Šneberger (12. 1. 2015 21:29)

Martk
Člen | 661
+
+1
-

Co takhle použít action* metodu, do které naplníš tu proměnou z databáze? Následně bude dostupná v obou komponentách.

Jan Suchánek
Člen | 404
+
0
-

@Antik a předávat v konstruktorech ne?

Martk
Člen | 661
+
0
-

@jenicek v presenterech raději použij inject property a nebo metody.

icanjan
Člen | 30
+
0
-

Díky, mrknu na možnosti, které jste napsali.