Jak z presenteru přistupovat k session

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

Mám začátečnický dotaz, jak mám v presenteru přistupovat k session, tady z toho jsem to moc nepochopil sessions

V komponentě vytvořím session, ale v presenteru potřebuji zjistit její existenci. Záměrně sem nedávám kód, protože vůbec nemám představu, jak v presenteru přistupovat k té vytvořené session. Mohu její existenci ověřovat v renderDefault a jak?

Díky za každou radu.

Tomáš Votruba
Moderator | 1114
+
0
-

K session můžeš jednoduše přistupovat třeba v metodě startup. Uvádím příklad pro použití ve více metodách.


/** @var \Nette\Http\SessionSection */
private $mySession;


protected function startup()
{
	parent::startup();
	$this->mySession = $this->context->session->getSection("mySession");

	// předáme session komponentě, případně v konstruktoru
	$this["myComponent"]->session = $this->mySession;
}


Editoval Schmutzka (15. 6. 2012 21:55)

ziki
Člen | 2
+
0
-

Zdravím a předem se omlouvám za lame dotaz-

výše uvedené jsem použil a funguje to super. Co ale nechápu je, jaktože to funguje i zpětně, tzn. pokud v jiné akci presenteru do té lokální proměnné něco přidám, tak že se to uloží zpět do SESSION a pak to tam najdu při reloadu stránky ?

Např.

	public function fillSession() {
		$this->mySession->name = 'lorem ipsum';
	}

Je tohle nějaká featura Nette, že když přiřadím nějaký objekt do lokální proměnné, tak že pak změna v té proměnné se promítá zpět do toho objektu ?