ako prevziat session nastavene pomocou JS

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

Caute, viete mi poradit? ked mam session nastavene pomocou JS:

document.cookie = "hodnota=" + true;

a prevezmem ho v presenteri:

$session = \Nette\Environment::getSession('hodnota');
\Nette\Diagnostics\Debugger::barDump($session);

tak mi vrati objekt: Nette\Http\SessionSection, toto session sa tam aj nachadza, ale neviem sa dostat k jeho hodnote, co robim zle? v neone mam este:

	nette:
		session:
			autoStart: smart
			expiration: +30 days
Tabetha
Člen | 140
+
0
-

Tak v presentri asi použiť radšej

$session = $this->session->getSection("hodnota");

než

$session = \Nette\Enviroment::getSession("hodnota");

a vrátiť premennú zo session

Debugger::barDump($session->variable);

miesto „variable“ názov tej premennej čo chceš…hádam je to čo si chcel

duskohu
Člen | 778
+
0
-

no problem je tom ze ja nemam ziadnu sekciu, takze ked zadam:

$session = $this->session->getSection("hodnota");
Debugger::barDump($session->hodnota);

tak mi vrati NULL, lebo hodnotu zobralo za sekciu :-( to by som musel nejako nastavit sekciu pomocou JS a do nej este vlozit hodnotu.

Draffix
Člen | 146
+
0
-

duskohu napsal(a):

no problem je tom ze ja nemam ziadnu sekciu, takze ked zadam:

$session = $this->session->getSection("hodnota");
Debugger::barDump($session->hodnota);

tak mi vrati NULL, lebo hodnotu zobralo za sekciu :-( to by som musel nejako nastavit sekciu pomocou JS a do nej este vlozit hodnotu.

Když si vytvoříš namespace třeba nette, tak pak session z té sekce dostaneš tímto

$session = $this->session->getSection("nette");

Když pak chceš dumpovat proměnné, tak musíš už mít v té session sekce nette nějakou proměnnou

studna
Člen | 181
+
0
-

A co třeba obyčejně? $_COOKIE['hodnota'] ?

Případně si to můžeš vytáhnout z požadavku. ;)

$this->getService('httpRequest')->getCookie('hodnota');