当我使用 set 作为捕获时,为啥 Twig 不能使用变量作为数组的索引?
Posted
技术标签:
【中文标题】当我使用 set 作为捕获时,为啥 Twig 不能使用变量作为数组的索引?【英文标题】:Why Twig cannot use variable as index for array when I use set as capture?当我使用 set 作为捕获时,为什么 Twig 不能使用变量作为数组的索引? 【发布时间】:2011-09-29 04:40:00 【问题描述】:在 Twig 中,我可以通过 2 种方式进行设置
% set car = 'Honda' %
或
% set car %Honda%endset%
第二种方式是“捕获”
当我尝试将变量用作数组中的索引时 例如,
cars[car].wheels | length
设置变量的第二种方法不起作用。为什么?
【问题讨论】:
【参考方案1】:你也可以像这样使用第二种方式(你应该修剪汽车变量):
% set car %Honda%endset%
cars[car|trim].wheels | length
【讨论】:
【参考方案2】:在 Twig 中打开调试模式。 使用调试扩展查看2种场景中的变量。
第一种方式
% set car = 'Honda' %
% debug car %
会告诉你那辆车仍然是本田的字符串
但是,第二种方式
% set car %Honda%endset%
% debug car %
会告诉你这辆车现在是一个
Twig_Markup 对象([content:protected] => car)
因此,如果您想将变量用作数组中的键或索引,请不要使用捕获作为设置变量的方法。
更新:Twig 版本大于 1.5 使用 dump 代替 debug
例如:
% set car = 'Honda' %
% debug car %
例如:
% set car %Honda%endset%
% debug car %
【讨论】:
@kissmyface meta.stackexchange.com/questions/17463/… 看起来调试在 Twig 1.5 中已被弃用。文档建议使用 dump 而不是 twig.sensiolabs.org/doc/functions/dump.html以上是关于当我使用 set 作为捕获时,为啥 Twig 不能使用变量作为数组的索引?的主要内容,如果未能解决你的问题,请参考以下文章
为啥当我切换工作区时 Flash Builder Premium 会作为标准版启动?
为啥不能将 const set<Derived*> 作为 const set<Base*> 传递给函数?