You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置含动态变量的变量名?Twig代码报错求助

解决Twig中动态命名变量的报错问题

嘿,我来帮你搞定这个Twig模板里的动态变量命名问题!

首先得说清楚为啥你会遇到这个报错:Twig的{% set %}语句在定义变量名的时候,不支持直接用~运算符拼接变量名——它期望的是一个固定的变量名标识符,而不是动态生成的表达式,所以才会抛出Unexpected token "operator" of value "~"这个错误。

那怎么实现你要的动态变量(foo0/bar0、foo1/bar1...),又不用数组呢?可以利用Twig的全局变量_context,它本质是一个包含所有模板变量的关联数组,我们可以直接给它赋值动态生成的键名,具体代码如下:

{% for i in 0..2 %}
    {% set _context['foo' ~ i] = attribute(array, 'getfoo' ~ i) %}
    {% set _context['bar' ~ i] = attribute(array, 'getbar' ~ i) %}
{% endfor %}

关键细节解释:

  1. _context的作用:通过给_context['foo' ~ i]赋值,就相当于在模板里创建了foo0、foo1这类直接可用的变量,完全满足你不想用数组的需求。
  2. attribute()函数:你原来的代码里'array'.'~i~'.'getfoo'应该是想调用array对象的getfoo0、getfoo1这类方法,attribute()函数就是用来动态访问对象方法/数组元素的,它能正确拼接方法名并执行调用。

这样修改后,循环结束你就可以直接在模板里使用foo0、bar0、foo1、bar1这些变量了,完全符合你的预期~

内容的提问来源于stack exchange,提问作者hashtagerrors

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:28:40