Twig - 具有 3 个操作数的 "for" 语法,这是什么意思
Twig - "for" syntax with 3 operands, what does it mean
我发现了一段类似这样的遗留代码:
{% for key, name, values in tag %}
...
...
{% endfor %}
(这属于Twig 1,现在我们正在迁移到Twig 3。)
所以“for”是在每个循环中从“tag”中提取 3 个值?我在文档中的任何地方都没有看到这种构造。
这样可以吗?有人帮助我理解这一点并可以提供一些例子吗?
似乎第三个参数 values
在编译过程中被忽略了,对于 twig 1.X
和 twig 3.X
都是如此。可以肯定地说,您可以省略 values
参数,因为它不会以任何方式影响 template/output
模板
{% for key, name, values in tag %}
{% endfor %}
twig 1.42.0 的编译源
$context['_seq'] = twig_ensure_traversable(($context["tag"] ?? $this->getContext($context, "tag")));
foreach ($context['_seq'] as $context["key"] => $context["name"]) {
}
twig 3.3.2 的编译源代码
$context['_seq'] = twig_ensure_traversable((isset($context["tag"]) || array_key_exists("tag", $context) ? $context["tag"] : (function () { throw new RuntimeError('Variable "tag" does not exist.', 1, $this->source); })()));
foreach ($context['_seq'] as $context["key"] => $context["name"]) {
}
我发现了一段类似这样的遗留代码:
{% for key, name, values in tag %}
...
...
{% endfor %}
(这属于Twig 1,现在我们正在迁移到Twig 3。)
所以“for”是在每个循环中从“tag”中提取 3 个值?我在文档中的任何地方都没有看到这种构造。
这样可以吗?有人帮助我理解这一点并可以提供一些例子吗?
似乎第三个参数 values
在编译过程中被忽略了,对于 twig 1.X
和 twig 3.X
都是如此。可以肯定地说,您可以省略 values
参数,因为它不会以任何方式影响 template/output
模板
{% for key, name, values in tag %}
{% endfor %}
twig 1.42.0 的编译源
$context['_seq'] = twig_ensure_traversable(($context["tag"] ?? $this->getContext($context, "tag")));
foreach ($context['_seq'] as $context["key"] => $context["name"]) {
}
twig 3.3.2 的编译源代码
$context['_seq'] = twig_ensure_traversable((isset($context["tag"]) || array_key_exists("tag", $context) ? $context["tag"] : (function () { throw new RuntimeError('Variable "tag" does not exist.', 1, $this->source); })()));
foreach ($context['_seq'] as $context["key"] => $context["name"]) {
}