如何在带有json_encode twig函数的twig文件中使用php json_encode选项
我试图使用twig json_encode函数,但当我这样做时如何在带有json_encode twig函数的twig文件中使用php json_encode选项,php,symfony,twig,Php,Symfony,Twig,我试图使用twig json_encode函数,但当我这样做时 var packageDetails = {{(packageDetails|json_encode)}}; packageDetails是从控制器传递的数组的数组 这让我说错话 invalid property id 因为“ 所以我想使用逃逸过滤器; 如何使用它?这仅仅是因为您没有将输出用引号括起来吗 var variable = '{{{reference}}}'; 更新: 解决这个问题的实际答案是根据
var packageDetails = {{(packageDetails|json_encode)}};
packageDetails是从控制器传递的数组的数组
这让我说错话
invalid property id
因为“
所以我想使用逃逸过滤器;
如何使用它?这仅仅是因为您没有将输出用引号括起来吗
var variable = '{{{reference}}}';
更新:
解决这个问题的实际答案是根据评论在标签上添加| raw
var packageDetails = {{(packageDetails|json_encode|raw)}};
您可以通过以下方式添加选项:
{{ data|json_encode(constant('JSON_PRETTY_PRINT'))|raw }}
添加此选项是因为它回答了标题中的问题,但听起来原始过滤器才是您真正想要的。不过,其他人可能会发现此选项很有用。对于任何与Blade/Laravel5.x有类似问题的人来说
var v = JSON.parse('{!! $v !!}');
如果我将输出用引号括起来,我就不会得到json对象。当我console.log它时,我得到的是
{“college”:..
我希望我的js变量存储一个对象,我可以循环通过这个对象。如果字符串包含一个“符号”,js将中断。使用“escape('js')”细枝过滤器来避免这种情况。因此,我建议:var variable='1{{reference | json | u encode | escape('js')| raw}“有同样的”问题,所以“原始注释”救了我的命。谢谢!@paulgreg你真的需要这里的|raw
吗?使用原始过滤器进行XSS攻击不会有危险吗?@Frank6:取决于数据的来源;如果它来自你自己的数据库查询或类似查询,它是相当安全的。如果它来自用户输入,那么它应该被消毒在传递到Twig viewGood之前!现在它没有在位置错误处给我意外的JSON标记。更改JSON.parse({{cats}JSON|u encode{raw}}');使用{cats{JSON|u encode(常量('JSON|u PRETTY_PRINT'))| raw}不使用双精度{?变量是$v或只是一个参数。即使不使用Laravel或blade,答案也不清楚。你真的认为我知道我4年前给出的答案吗?;)可能不知道,但任何读过本文并对blade/Laravel5.x记忆犹新的人都可以回答这个问题。