Předání session do proměnné v šabloně

cafesk8
Člen | 103
+
0
-

Zdravím,

v presenteru mám ajaxovou akci, kde si ukládám už. data do session section frontPage:

	public function handleSaveIt($data) {
		$front_page = $this->session->getSection('frontPage');

		$data = json_decode($data,true) ;

		foreach($data as $d => $k) {
			$front_page[$d] = $k;
		}

		if($this->isAjax()) {
			$this->sendResponse(new JsonResponse($response));
		}
	}

Krásně to funguje a v TRACY v sekci sessions se mi vše krásně vypíše jak má.

Problém nastane když chci na té stránce podmíněně něco v šabloně zobrazovat podle toho zda je něco uložená v session. Data v té session jsou NULL.

	public function renderPredniStrana() {
		$session =  $this->session->getSection('frontPage');
		$this->template->savedData 	= $session;
	}

když dám v šabloně {dump $savedData}tak mi to vypíše toto:

Nette\Http\SessionSection
	warnOnUndefined => false
	session private =>
	regenerated private => false
	options private =>
	request private =>
	response private =>
	cookieDomain => ""
	cookiePath => "/"
	cookieSecure => false
	cookieHttpOnly => true
	warnOnBuffer => true
	code private => 200
	handler private => null
	name private => "frontPage"
	data private => null
	meta private => false

Nevíte někdo co s tím?

MajklNajt
Člen | 471
+
0
-

dáta sa načítajú do property data až keď k ním pristupuješ, skús v šablóne použiť

{if $savedData->offsetExists("kluc")}...vypíš niečo...{/if}

EDIT: prípadne si v presenteri pošli do šablóny iba to, čo potrebuješ:

public function renderPredniStrana() {
    $session = $this->session->getSection("frontPage");
    $this->template->foo = $session->offsetGet("kluc"); // eventuálne $session->kluc
}

v šablóne:

{if $foo}...vypíš niečo...{/if}

Editoval MajklNajt (2. 10. 2019 15:24)

cafesk8
Člen | 103
+
0
-

MajklNajt napsal(a):

dáta sa načítajú do property data až keď k ním pristupuješ, skús v šablóne použiť

{if $savedData->offsetExists("kluc")}...vypíš niečo...{/if}

EDIT: prípadne si v presenteri pošli do šablóny iba to, čo potrebuješ:

public function renderPredniStrana() {
    $session = $this->session->getSection("frontPage");
    $this->template->foo = $session->offsetGet("kluc"); // eventuálne $session->kluc
}

v šablóne:

{if $foo}...vypíš niečo...{/if}

Super, takhle to již funguje. Díky