使用Twig填充JavaScript变量

时间:2014-09-23 16:10:58

标签: javascript php json twig

我将一个数组传递给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=[&quot;one&quot;,&quot;two&quot;,&quot;three&quot;]

0 个答案:

没有答案