如何在Twig中设置多维数组?

24

我正在为我的Symfony2项目使用Twig模板引擎。我需要定义一个二维数组。我尝试了以下方法:

{% set fields = { {'name': 'description', 'value':  '1'}, { 'name': 'abc', 'value': '2'}, { 'name':'tags', 'value': '3'} } %}

但是我正在变得

A hash key must be a quoted string, a number, a name, or an expression enclosed in parentheses (unexpected token "punctuation" of value "{" in ABundle:XYZ:edit_a_page.html.twig at line 51  

不确定上述代码有什么问题。

在Twig中设置一个二维数组的正确语法是什么?


2
下次尝试考虑JSON,TWIG几乎具有相同的数组语法。 - Touki
2个回答

42
在Twig中,用[]表示数组,用{}表示哈希表。哈希表是一个键值对,其中每个键都有明确的键名(字符串或整数),数组只是一组没有明确定义键名的值(它们将以数字索引)。
为了使用哈希表,您必须为每个元素提供一个键。
因此,您想要的可能是{% set fields = [ {'name': 'description', 'value': '1'}, { 'name': 'abc', 'value': '2'}, { 'name':'tags', 'value': '3'} ] %}

2
那么你要如何改变主键呢?目前它仍然是0、1、2、3等。 - stabbie
1
如果您想设置自己的唯一键,请使用哈希语法(外部花括号而不是方括号),并在每个键前面加上一个冒号,例如user1529918的答案。同时也很有用的是Twig的dump函数,可以验证它所看到的内容。 - William Turrell
嗨,这可能是一个愚蠢的问题,但这个哈希是什么对象类?它只是一个关联数组吗?json.decode('{{...},{....}}')会创建一个相同类的对象吗? - Tomk07

3
你可以这样做:

{% set foo = {"adjuster_list": {"id": "1", "name": "Joe Smith"}} %}


2
或者像这样:**{% set foo = {"adjuster_list": [{"id": 1, "name": "Joe Smith"}]} %}** - xfloys2112
那很有帮助。或者它是以JSON风格编写的。 - Vishal Kumar Sahu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接