我在树枝上有一些变数
placeholder1
placeholder2
placeholderx
Run Code Online (Sandbox Code Playgroud)
为了调用它们,我循环遍历对象数组"发票"
{% for invoices as invoice %}
need to display here the placeholder followed by the invoice id number
{{ placeholedr1 }}
Run Code Online (Sandbox Code Playgroud)
任何的想法?谢谢.
小智 25
我只是遇到了同样的问题 - 并且使用了这个第一个答案,经过一些额外的研究后发现{{ attribute(_context, 'placeholder'~invoice.id) }}
应该工作(_context
作为包含所有对象的全局上下文对象)
mar*_*ias 12
您也可以使用常规括号表示法访问数组的值,而不是使用该attribute
函数_context
:
{{ _context['placeholder' ~ id] }}
Run Code Online (Sandbox Code Playgroud)
我个人会使用这个,因为它更简洁,在我看来更清楚.
如果环境选项 strict_variables
设置为true
,您还应该使用default
过滤器:
{{ _context['placeholder' ~ id]|default }}
{{ attribute(_context, 'placeholder' ~ id)|default }}
Run Code Online (Sandbox Code Playgroud)
否则,Twig_Error_Runtime
如果变量不存在,您将获得异常.举例来说,如果你有变量foo
,并bar
而是尝试输出变量baz
(不存在),你得到的信息是例外Key "baz" for array with keys "foo, bar" does not exist
.
检查变量是否存在的更详细的方法是使用defined
测试:
{% if _context['placeholder' ~ id] is defined %} ... {% endif %}
Run Code Online (Sandbox Code Playgroud)
使用default
过滤器,您还可以提供默认值,例如null
字符串:
{{ _context['placeholder' ~ id]|default(null) }}
{{ attribute(_context, 'placeholder' ~ id)|default('Default value') }}
Run Code Online (Sandbox Code Playgroud)
如果省略默认值(即使用|default
而不是|default(somevalue)
),则默认值为空字符串.
strict_variables
是false
默认,但我更愿意将它设置为true
避免因例如错别字意外的问题.
归档时间: |
|
查看次数: |
17378 次 |
最近记录: |