gpt4 book ai didi

php - 带有 Symfony 2 的 Twig 显示 prod 和 dev 之间不同的 json 编码变量

转载 作者:可可西里 更新时间:2023-10-31 23:03:31 24 4
gpt4 key购买 nike

我们正在构建一个 Symfony 2 应用程序,它将一些数据从 Controller 发送到 View :

Controller

$user = array(
'configuration' => array(
'levels' => array(
'warning' => 0.05,
'danger' => 0.10,
),
),
);

return $this->render(
'MyWebsiteBundle:Core:searchResults.html.twig',
array(
'userJSON' => json_encode($user)
)
);

查看

<script language="javascript">
user = $.parseJSON("{{ userJSON }}");
</script>

结果

dev 上,结果如下所示并且按预期工作:

user = $.parseJSON("\x7B\x22configuration\x22\x3A\x7B\x22levels\x22\x3A\x7B\x22warning\x22\x3A0.05,\x22danger\x22\x3A0.1\x7D\x7D\x7D");

另一方面,在 prod 上,结果以不同的方式编码,因此在控制台中显示错误:

user = $.parseJSON("{&quot;configuration&quot;:{&quot;levels&quot;:{&quot;warning&quot;:0.05,&quot;danger&quot;:0.1}}}");

控制台错误:未捕获的语法错误:意外的 token &

是什么导致了这种差异?

最佳答案

编辑:另请查看下面@Lulhum 的解决方案。如果它更好,请投票,所以我会选择它作为正确答案。

“问题”是 Twig 自动转义变量。我使用 Twig 的 raw 过滤器来跳过这样的自动转义:

<script language="javascript">
user = $.parseJSON('{{ userJSON | raw }}');
</script>

现在打印:

user = $.parseJSON('{"configuration":{"levels":{"warning":0.05,"danger":0.1}}}');

链接: Symfony 2 Docs - Output escaping

关于php - 带有 Symfony 2 的 Twig 显示 prod 和 dev 之间不同的 json 编码变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19552673/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com