Twig json_encode有多个选项

时间:2016-04-29 11:44:57

标签: php symfony twig

From the TWIG documentaion about json_encode() filter他们说:

  

json_encode

     

json_encode过滤器返回值的JSON表示:

{{ data|json_encode() }}
     

在内部,Twig使用PHP json_encode函数。

     

参数

     

options:json_encode选项的位掩码

({{data|json_encode(constant('JSON_PRETTY_PRINT')) }})

我要做的是添加多个选项。

我想要JSON_PRETTY_PRINTJSON_UNESCAPED_SLASHES

我试过了

{{ array|json_encode(constant('JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES')) }}
{{ array|json_encode(constant('JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES')) }}
{{ array|json_encode(constant('JSON_PRETTY_PRINT', 'JSON_UNESCAPED_SLASHES')) }}

但它们都不起作用。如何为TWIG json_encode()过滤器组合两个选项?

TwigFiddle here

{% set array = {'xxx': "one", 'yyy': "two", 'path': "/hello/world" } %}

{% autoescape false %}
    {{ array|json_encode() }}
    {{ array|json_encode(constant('JSON_PRETTY_PRINT')) }}
    {{ array|json_encode(constant('JSON_UNESCAPED_SLASHES')) }}
{% endautoescape %}

所需的输出应为

{
    "xxx": "one",
    "yyy": "two",
    "path": "/hello/world"
}

1 个答案:

答案 0 :(得分:11)

您似乎需要b-or来进行按位或操作(docs)。

所以这样的事情应该有效:

{{ array|json_encode(constant('JSON_PRETTY_PRINT') b-or constant('JSON_UNESCAPED_SLASHES')) }}