我将一个数组传递给Twig,并希望Twig对它进行json_encode并将其分配给一个JavaScript变量。这样做时,它没有很好地形成,并显示为:
["one","two","three"]
对于我的直接情况,数据不是用户提供的,并且被认为是安全的,但是,我可能还有其他情况,但事实并非如此。
如何最好地完成此任务。
PHP文件
<?php
require_once '../../../vendor/autoload.php';
Twig_Autoloader::register();
try {
$loader = new Twig_Loader_Filesystem('templates');
$twig = new Twig_Environment($loader, array(
'debug' => true
));
$twig->addExtension(new Twig_Extension_Debug());
echo $twig->render('json.html', array('data'=>array('one','two','three')));
} catch (Exception $e) {
die ('ERROR: ' . $e->getMessage());
}
?>
json.html
<!DOCTYPE html>
<html>
<head>
<script type='text/javascript'>
var data={{ data|json_encode() }}
console.log(data);
</script>
</head>
<body>
<pre>{{ dump(data) }}</pre>
<pre>{{ dump(data|json_encode()) }}</pre>
</body>
</html>
输出:
array(3) {
[0]=>
string(3) "one"
[1]=>
string(3) "two"
[2]=>
string(5) "three"
}
string(21) "["one","two","three"]"
SyntaxError: syntax error
var data=["one","two","three"]