gpt4 book ai didi

php - Twig 动态变量赋值

转载 作者:行者123 更新时间:2023-12-04 02:04:34 26 4
gpt4 key购买 nike

我正在尝试在循环内动态分配 Twig 中的变量。例如,这是传递到模板中的 JSON:

[{
"name": "firstName",
"value": "Adam",
},
{
"name": "Lastname",
"value": "Human",
}]

值得注意的是,我没有能力修改这个 JSON 格式,因为它来自第三方,所以我需要在模板端解决这个问题。

我想遍历这个 json 并为每个对象创建变量,如下所示:

{% for item in json %}
{% set {{item.name}} = item.value %}
{% endfor %}

挑战在于,当我想将值分配给已评估的变量名称时,Twig 假设我正在为文字分配一个值。这样我就可以像 {{firstName}} 一样引用数组中的每个项目并在模板中取回“Adam”。

我尝试了很多不同的方法来强制 Twig 动态创建一个变量数组,例如:

{% set (item.name) = item.value %}

{% set options = {} %}
{% for item in json %}
{% set options[item.name] = item.value %}
{% endfor %}

没有运气。

关于动态创建变量有什么想法吗?这在大多数编程语言中都是直截了当的,所以我很难理解如何在像 Twig 这样的模板引擎中处理它。

最佳答案

如果这些值实际上是可迭代的而不是单个 json 字符串,您可以将它们放在一个数组中,例如:

{% set values = [] %}
{% for item in json %}
{% set values = values|merge({(item.name): item.value}) %}
{% endfor %}

然后你可以使用values.firstName

如果是json字符串,就不能这样循环了。您需要在 Twig 中编写一个基本的字符串解析器。我上周在 this answer 中写过类似的东西然而。总的来说,这是一个非常糟糕的主意,因为它在很多场合都失败了。

关于php - Twig 动态变量赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44418383/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com