当我使用set作为捕获时,为什么Twig不能将变量用作数组的索引?

时间:2011-07-05 22:29:22

标签: php arrays variables set twig

在Twig,我可以用两种方式做一套

{% set car = 'Honda' %}

{% set car %}Honda{%endset%}

第二种方式是'捕获'

当我尝试将变量用作数组中的索引时 例如,

{{ cars[car].wheels | length }}

设置变量的第二种方法不起作用。为什么呢?

2 个答案:

答案 0 :(得分:5)

在Twig中打开调试模式。 使用调试扩展来查看2个场景中的变量。

第一种方式

{% set car = 'Honda' %}
{% debug car %} 

会告诉你汽车仍然是本田的字符串

然而,第二种方式

{% set car %}Honda{%endset%}
{% debug car %}

会告诉你汽车现在是

Twig_Markup对象([content:protected] => car)

因此,如果要将变量用作数组中的键或索引,请不要使用capture作为设置变量的方法。

更新:对于大于1.5的Twig版本,使用dump来替换debug

例如:

{% set car = 'Honda' %}
{% debug car %} 

例如:

{% set car %}Honda{%endset%}
{% debug car %}

答案 1 :(得分:2)

你也可以像这样使用第二种方法(你应该修剪汽车变量):

{% set car %}Honda{%endset%}

{{ cars[car|trim].wheels | length }}