加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Twig与Symfony 2显示在prod和dev之间不同的json编码变量

发布时间:2020-12-13 14:07:09 所属栏目:PHP教程 来源:网络整理
导读:我们正在构建一个Symfony 2应用程序,从控制器发送一些数据来查看: 调节器 $user = array( 'configuration' = array( 'levels' = array( 'warning' = 0.05,'danger' = 0.10,),);return $this-render( 'MyWebsiteBundle:Core:searchResults.html.twig',array(
我们正在构建一个Symfony 2应用程序,从控制器发送一些数据来查看:

调节器

$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("x7Bx22configurationx22x3Ax7Bx22levelsx22x3Ax7Bx22warningx22x3A0.05,x22dangerx22x3A0.1x7Dx7Dx7D");

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

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

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

什么产生这个差异?

编辑:另外查看@ Lulhum的解决方案.如果它更好,最好选择它作为正确的答案.

“问题”是Twig自变量变量.我使用Twig的原始过滤器来跳过自动转换,如下所示:

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

现在打印:

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

链接:
Symfony 2 Docs – Output escaping

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读