如何在树枝中访问动态变量名称?

2022-08-30 20:17:09

我在树枝中有一些变量,如

placeholder1
placeholder2
placeholderx

为了调用它们,我正在循环遍历对象数组“发票”

{% for invoices as invoice %}
    need to display here the placeholder followed by the invoice id number
    {{ placeholedr1 }}

答案 1

我只是遇到了同样的问题 - 并且使用这个第一个答案,经过一些额外的研究后发现应该工作(作为包含所有对象的全局上下文对象){{ attribute(_context, 'placeholder'~invoice.id) }}_context


答案 2

除了使用属性函数之外,您还可以使用常规括号表示法访问数组的值:_context

{{ _context['placeholder' ~ id] }}

我个人会使用这个,因为它更简洁,在我看来更清晰。

如果环境选项设置为 ,则还应使用过滤器:strict_variablestruedefault

{{ _context['placeholder' ~ id]|default }}

{{ attribute(_context, 'placeholder' ~ id)|default }}

否则,如果变量不存在,您将收到异常。例如,如果您有变量,但尝试输出变量(不存在),则会收到该异常,并显示消息 。Twig_Error_RuntimefoobarbazKey "baz" for array with keys "foo, bar" does not exist

检查变量是否存在的更详细方法是使用定义的测试

{% if _context['placeholder' ~ id] is defined %} ... {% endif %}

使用过滤器,您还可以提供默认值,例如 或字符串:defaultnull

{{ _context['placeholder' ~ id]|default(null) }}

{{ attribute(_context, 'placeholder' ~ id)|default('Default value') }}

如果省略默认值(即使用而不是 ),则默认值将为空字符串。|default|default(somevalue)

strict_variables是默认的,但我更喜欢将其设置为以避免例如拼写错误引起的意外问题。falsetrue


推荐