Как генерировать json с smarty?
В Smarty существует стандартная функция или простой способ генерации json из массива, как json_encode() в php? На самом деле, похоже, что нет в документации, но хотелось спросить в любом случае.
Спасибо,
Синан.
Ответы
Ответ 1
Это должно сработать. @Позволяет smarty запускать модификатор против всего массива, иначе он делает это для каждого элемента.
{$myarray|@json_encode}
Если $escape_html включен, вам нужно будет использовать nofilter
:
{$myarray|@json_encode nofilter}
Ответ 2
В то время как {$myarray|@json_encode}
действительно испускает массив, закодированный в json, он также ускользает от специальных символов, что делает массив непригодным для использования в javascript.
Чтобы избежать экранирования специальных символов, а также использовать массив в javascript, используйте флаг nofilter:
{$myarray|@json_encode nofilter}
Ответ 3
Вы должны использовать json_encode()
в ur php-коде, затем присвойте значение smarty, используя
$smarty->assign()
. После этого вам нужно проанализировать это значение в файле шаблона ur, используя
JavaScript.
фрагмент кода:
{literal}
<script>
var json = JSON.parse('{/literal}{$urarray}{literal}');
//another statments
</script>
{/literal}
Ответ 4
Я ничего не знаю. Вы можете присвоить json_encode() результат переменной smarty в вашем "php-коде" с помощью $smarty- > assign (...), а затем использовать его в своем шаблоне.
Также есть функция Smarty extension для json_decode(). Нетрудно написать собственное расширение для противоположного на основе этого.