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