rozběhnutí sessions v Nette

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

Zdravím,
potřeboval bych v projektu používat sessions.

V config.neon mám uvedeno:

nette:
	session:
		autoStart: smart

v bootstrap.php mám uvedeno:

$container->router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');

if ($container->session->exists()) {
    $session = $container->session->start();
}

když chci v presenteru nebo v komponentě provést:

$section = $session->getSection(‚myCounter‘);;

Tak mi v laděnce píše chybu:

Undefined variable: session

když chci vyzkoušet tento kód:

$section = $container->session->getSection('myCounter');
$section->count++; // zvětšíme čítač o jedničku
echo "Stránku jste zobrazil $section->count ×";

Tak mi to hlásí:

Undefined variable: container

Nemohu se přes to dostat. Nevíte čím by to mohlo být?

Editoval pernip01 (20. 4. 2012 17:43)

hAssassin
Člen | 293
+
0
-

chyba rika vse, nemas definovanou ani promenou $session ani promenou $container (predpokladam ze oboje zkousis volat z prezenteru). Cili to zkus takto:

$section = $this->context->session->getSection('myCounter');

Mozna by mela fungovat i zkratka (ale tim si ted nejsem 100% jisty):

$this->section = $this->session->getSection('myCounter');
22
Člen | 1478
+
0
-

když máš v bootsrapu autoStart: smart, což je myslím i defaultní hodnota teď a nemusí se uvádět, tak v bootstrapu je tak kontrola zbytečná.

pernip01
Člen | 21
+
0
-

Děkuji za radu, už se to v presenteru podařilo. Ještě bych potřeboval vědět, jak se na sessions mám odkazovat z :
komponenty: class Komponenta extends UI\Control
a z:
formuláře: který je objektem class Formular extends UI\Form

děkuji.

Jan Endel
Člen | 1016
+
0
-

V obojím případě je vhodné předávat si session jako závislost skrze jejich konstruktor a pak s ní pracovat jako s každou jinou vnitřní proměnnou.

Prokop
Člen | 31
+
0
-

Díky! Konečně mi nějaký příspěvek také pomohl!