Převod pole do JSON v latte

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

Zdravím všechny,

potřeboval bych nasměrovat jak převést pole do JSON v latte nebo presenteru. Potřebuju totiž použít hodnoty pro zobrazení v grafu. Do šablony dostávám hodnoty z DB klasicky:

$this->template->keyword_positions = $this->checkerRepository->getPositionTable()->where(array('keyword_id', $id));

ale už nevím jak pole keyword_positions předělat na JSON a použít to jako pole do javascriptu.

Díky za každou radu.

Etch
Člen | 403
+
0
-

Třeba:

Nette\Utils\Json::encode();

Editoval Etch (30. 11. 2014 22:16)

TOMeek
Člen | 64
+
0
-

quiced napsal(a):

Zdravím všechny,

potřeboval bych nasměrovat jak převést pole do JSON v latte nebo presenteru. Potřebuju totiž použít hodnoty pro zobrazení v grafu. Do šablony dostávám hodnoty z DB klasicky:

$this->template->keyword_positions = $this->checkerRepository->getPositionTable()->where(array('keyword_id', $id));

ale už nevím jak pole keyword_positions předělat na JSON a použít to jako pole do javascriptu.

Díky za každou radu.

Myslíš něco jako

$this->template->keyword_positions = Nette\Utils\Json::encode($keyword_positions_array)
quiced
Člen | 85
+
0
-

Díky za radu, ale teď nevím jestli můžu rovnou v javascriptu použít {$keyword_positions} nebo se to dělá nějak jinak. Když jsem si totiž zkoušel přes console.log zobrazit {$keyword_positions} vyjela mi prázdná hodnota.

petr.pavel
Člen | 535
+
+2
-

Ukaž šablonu, prosím. Mám za to, že by mělo stačit

<?php
$this->template->keyword_positions = $this->checkerRepository->getPositionTable()->where(array('keyword_id', $id))
?>
<script>
var positions = {$keyword_positions};
</script>

Jinými slovy – nepřevádět v presenteru a nechat escapování v Latte, ať to udělá za tebe.

Maximálně za ->where() přidat ->fetchPairs() / ->fetchAssoc(), ale nejdřív to zkus bez nich.

quiced
Člen | 85
+
0
-

Tak super už to funguje stačilo použít fetchPairs ani nebylo nutné to převádet přes Nette\Utils\Json::encode do JSON.

Díky všem za rady.