Add a string Twig function that renders arrays as json_encoded strings, and just outputs other values (used by the form plugin)

This commit is contained in:
Flavio Copes
2015-09-04 14:59:41 +02:00
parent 89c694443d
commit 469ab56b64

View File

@@ -84,6 +84,7 @@ class TwigExtension extends \Twig_Extension
new \Twig_SimpleFunction('gist', [$this, 'gistFunc']),
new \Twig_simpleFunction('random_string', [$this, 'randomStringFunc']),
new \Twig_SimpleFunction('array', [$this, 'arrayFunc']),
new \Twig_SimpleFunction('string', [$this, 'stringFunc']),
new \Twig_simpleFunction('t', [$this, 'translate']),
new \Twig_simpleFunction('ta', [$this, 'translateArray'])
];
@@ -414,7 +415,7 @@ class TwigExtension extends \Twig_Extension
public function translate()
{
return $this->grav['language']->translate(func_get_args());
return $this->grav['language']->translate(func_get_args());
}
public function translateArray($key, $index, $lang = null)
@@ -531,6 +532,15 @@ class TwigExtension extends \Twig_Extension
return (array) $value;
}
public function stringFunc($value)
{
if (is_array($value)) { //format the array as a string
return json_encode($value);
} else {
return $value;
}
}
public function translateFunc()
{
return $this->grav['language']->translate(func_get_args());