Передать 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>
 

Вложения

  • Screenshot_4.png
    Screenshot_4.png
    22,7 KB · Просмотры: 8
Вы определитесь, JSON или массив.
И какая версия Smarty. А то сейчас опять окажется, что вторая…
И, да, не надо врать, что ничего найти не можете. Целый форум только вас ждёт.
 
Смарти 3. Данные приходят в формате json. Я находил примеры, но они связаны не с смарти. На чистом php без шаблонизатора, все работает как нужно, а со смарти не хочет, хкранируются символы. Я с json никогда не сталкивался, поэтому и прошу помощи.
 
Зачем вообще что-то "использовать", если вы сами эти данные никак не используете?
Просто передайте строку в шаблон и там выведите.
 
Зачем вообще что-то "использовать", если вы сами эти данные никак не используете?
Просто передайте строку в шаблон и там выведите.
Это стандартные значения, я буду их менять, они будут браться с базы. Если оно не работает с статистическими данными, то не будет и с динамическими
 
{$data|json_encode}

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

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

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

Вложения

  • Screenshot_4.png
    Screenshot_4.png
    5,9 KB · Просмотры: 7
Если вы про \uXXXX - это, извините, нормальный уникод. Если хотите более читаемый вариант, читайте http://php.net/json_encode, но для программ это всё изофаллично.
 
Можно подробней? Мне в php испильзовать json_decode($data) а в смарти {$data|json_encode}? Или наоборот?
если был внешний источник в формате json, то перевод в пхп это json_decode
если в шаблоне есть необходимость перевести переменную в json, то это {$data|json_encode}
 
Сверху