Передать JSON массив в шаблонизатор Smarty

Shorek

Новичок
Здравствуйте. Такая проблема. В файл tpl нужно передать json массив.
В файле строится график плагином JS, и в data атрибут он принимает этот массив.
Не получается вывести нормально, символы экранируются, а как сделать что бы не экранировались не знаю, ничего найти не могу.
вот код модуля

и вот что он выводит. Подскажите пожалуйста как правильно вывести?
пытался так вывести
{$data|@json_encode nofilter}

<code>

<?php
require_once('module/auth.php');

$data=array(
array(
'label' => 'Заработано на инвестициях',
'color' => '#745fa4',
'data' =>
array(
array('Март', 125),
array('Апрель', 148),
array('Май', 42),
array('Июнь', 115),
array('Июль', 45)
)
),
array(
'label' => 'Заработано по партнерке',
'color' => '#58a7e2',
'data' =>
array(
array('Март', 15),
array('Апрель', 48),
array('Май', 142),
array('Июнь', 15),
array('Июль', 65)
)
)
);

/*$json = json_encode($data);*/
setPage('data', $data);
showPage();
?>

</code>
 

Вложения

AnrDaemon

Продвинутый новичок
Вы определитесь, JSON или массив.
И какая версия Smarty. А то сейчас опять окажется, что вторая…
И, да, не надо врать, что ничего найти не можете. Целый форум только вас ждёт.
 

Shorek

Новичок
Смарти 3. Данные приходят в формате json. Я находил примеры, но они связаны не с смарти. На чистом php без шаблонизатора, все работает как нужно, а со смарти не хочет, хкранируются символы. Я с json никогда не сталкивался, поэтому и прошу помощи.
 

AnrDaemon

Продвинутый новичок
Зачем вообще что-то "использовать", если вы сами эти данные никак не используете?
Просто передайте строку в шаблон и там выведите.
 

Shorek

Новичок
Зачем вообще что-то "использовать", если вы сами эти данные никак не используете?
Просто передайте строку в шаблон и там выведите.
Это стандартные значения, я буду их менять, они будут браться с базы. Если оно не работает с статистическими данными, то не будет и с динамическими
 

AnrDaemon

Продвинутый новичок
{$data|json_encode}

Это при условии, что $data - это массив/объект.
 
  • Like
Реакции: Ami

Shorek

Новичок
{$data|json_encode}

Это при условии, что $data - это массив/объект.
Решил пойти немного другим путем. На чистом php к атрибутом подключаю файл, и все работает. Вот так

<div data-source="chart/chart-data.php"></div>
С атрибута считывает данные js, т.е в шаблон они выводятся через js
Если так сделать на смарти то выводит ошибку, что файл не найден. Не подскажите как правильно подключить?Приложил картинку
 

Вложения

AnrDaemon

Продвинутый новичок
Если вы про \uXXXX - это, извините, нормальный уникод. Если хотите более читаемый вариант, читайте http://php.net/json_encode, но для программ это всё изофаллично.
 

WMix

герр M:)ller
Партнер клуба
Можно подробней? Мне в php испильзовать json_decode($data) а в смарти {$data|json_encode}? Или наоборот?
если был внешний источник в формате json, то перевод в пхп это json_decode
если в шаблоне есть необходимость перевести переменную в json, то это {$data|json_encode}
 
Сверху