如何在树枝中访问动态变量名称?
我在树枝中有一些变量,如
placeholder1
placeholder2
placeholderx
为了调用它们,我正在循环遍历对象数组“发票”
{% for invoices as invoice %}
need to display here the placeholder followed by the invoice id number
{{ placeholedr1 }}
我在树枝中有一些变量,如
placeholder1
placeholder2
placeholderx
为了调用它们,我正在循环遍历对象数组“发票”
{% for invoices as invoice %}
need to display here the placeholder followed by the invoice id number
{{ placeholedr1 }}
我只是遇到了同样的问题 - 并且使用这个第一个答案,经过一些额外的研究后发现应该工作(作为包含所有对象的全局上下文对象){{ attribute(_context, 'placeholder'~invoice.id) }}
_context
除了使用属性
函数之外,您还可以使用常规括号表示法访问数组的值:_context
{{ _context['placeholder' ~ id] }}
我个人会使用这个,因为它更简洁,在我看来更清晰。
如果环境选项设置为 ,则还应使用过滤器:strict_variables
true
default
{{ _context['placeholder' ~ id]|default }}
{{ attribute(_context, 'placeholder' ~ id)|default }}
否则,如果变量不存在,您将收到异常。例如,如果您有变量,但尝试输出变量(不存在),则会收到该异常,并显示消息 。Twig_Error_Runtime
foo
bar
baz
Key "baz" for array with keys "foo, bar" does not exist
检查变量是否存在的更详细方法是使用定义的
测试:
{% if _context['placeholder' ~ id] is defined %} ... {% endif %}
使用过滤器,您还可以提供默认值,例如 或字符串:default
null
{{ _context['placeholder' ~ id]|default(null) }}
{{ attribute(_context, 'placeholder' ~ id)|default('Default value') }}
如果省略默认值(即使用而不是 ),则默认值将为空字符串。|default
|default(somevalue)
strict_variables
是默认的,但我更喜欢将其设置为以避免例如拼写错误引起的意外问题。false
true