mirror of
https://github.com/twigphp/Twig.git
synced 2026-09-13 02:46:29 +00:00
fixed json_encode filter (thanks to Koc for the fix)
This commit is contained in:
@@ -48,7 +48,7 @@ class Twig_Extension_Core extends Twig_Extension
|
||||
|
||||
// encoding
|
||||
'url_encode' => new Twig_Filter_Function('twig_urlencode_filter'),
|
||||
'json_encode' => new Twig_Filter_Function('json_encode'),
|
||||
'json_encode' => new Twig_Filter_Function('twig_jsonencode_filter'),
|
||||
|
||||
// string filters
|
||||
'title' => new Twig_Filter_Function('twig_title_string_filter', array('needs_environment' => true)),
|
||||
@@ -232,6 +232,24 @@ function twig_urlencode_filter($url, $raw = false)
|
||||
return urlencode($url);
|
||||
}
|
||||
|
||||
function twig_jsonencode_filter($value, $options = 0)
|
||||
{
|
||||
if ($value instanceof Twig_Markup) {
|
||||
$value = (string) $value;
|
||||
} elseif (is_array($value)) {
|
||||
array_walk_recursive($value, '_twig_markup2string');
|
||||
}
|
||||
|
||||
return json_encode($value, $options);
|
||||
}
|
||||
|
||||
function _twig_markup2string(&$value)
|
||||
{
|
||||
if ($value instanceof Twig_Markup) {
|
||||
$value = (string) $value;
|
||||
}
|
||||
}
|
||||
|
||||
function twig_array_merge($arr1, $arr2)
|
||||
{
|
||||
if (!is_array($arr1) || !is_array($arr2)) {
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
--TEST--
|
||||
"json_encode" filter
|
||||
--TEMPLATE--
|
||||
{{ "foo"|json_encode|raw }}
|
||||
{{ foo|json_encode|raw }}
|
||||
{{ [foo, "foo"]|json_encode|raw }}
|
||||
--DATA--
|
||||
return array('foo' => new Twig_Markup('foo'))
|
||||
--EXPECT--
|
||||
"foo"
|
||||
"foo"
|
||||
["foo","foo"]
|
||||
Reference in New Issue
Block a user