Jak volat session v šabloně?

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

jak lze zavolat session v šabloně?
bootstrap:

$session = Environment::getSession();

komponenta:

$session->test['item'] = 'testItem';

a jak ji volat v šabloně, počítám, že není třeba ji posílat přes render?

Editoval 22 (19. 3. 2010 13:22)

Foowie
Člen | 269
+
0
-

Myslím si, že zatahovat session do šablony je trošku špatný návrh. Přecejenom session jako nette třída je defacto model, který by se s view neměl přímo „kamarádit“ .) Přinejhorším bych do šablony předal jako parametr session namespace…

Ale kdybys to moc potřeboval, tak třeba takhle:

Např. renderDefault()

<?php
	$session = Environment::getSession("namespace");
	$session["variable"] = 5;
?>

šablona:

<?php
	{=Environment::getSession("namespace")->variable}
?>

Editoval Foowie (19. 3. 2010 16:13)

pekelnik
Člen | 462
+
0
-

tohle se hodně zjednodužší pokud environment bude objekt. snad se to plánuje nejsem si jist…

Jan Tvrdík
Nette guru | 2595
+
0
-

K původnímu problému: Vytáhni si to ze session v presenteru a předej šabloně.


Proč by Environment měl být objektem?

Editoval Jan Tvrdík (20. 3. 2010 14:49)

22
Člen | 1478
+
0
-

jn, tak už to reším viz. https://forum.nette.org/…i-prohlizece

pekelnik
Člen | 462
+
0
-

Kvůli lepší dostupnosti <?php $env->user; ?> atd. neříkám že to tak bude – jen říkám že se to někde řešilo a odezvy byly poměrně kladné.

lactarius
Člen | 47
+
0
-

Ty máš zřejmě namysli user automaticky v šabloně. To jsem tu zahlídl – já ho tak jako tak posílám z BasePresenteru…