Как генерировать 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(). Нетрудно написать собственное расширение для противоположного на основе этого.