我在树枝上有一些变量,比如
placeholder1
placeholder2
placeholderx
要调用它们,我循环遍历对象数组“发票”
{% for invoices as invoice %}
need to display here the placeholder followed by the invoice id number
{{ placeholedr1 }}
有什么想法吗?谢谢。
答案 0 :(得分:24)
我遇到了同样的问题 - 并且使用了第一个答案,经过一些额外的研究后发现{{ attribute(_context, 'placeholder'~invoice.id) }}
应该有效(_context
是包含所有对象名称的全局上下文对象)
答案 1 :(得分:8)
您可以使用常规括号表示法访问_context
数组的值,而不是使用attribute
function:
{{ _context['placeholder' ~ id] }}
我个人会使用这个,因为它更简洁,在我看来更清楚。
如果environment option 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
获得该异常。
检查变量是否存在的更详细的方法是使用defined
test:
{% 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
以避免由例如<android.support.v7.widget.AppCompatCheckBox
android:id="@+id/cbCheck"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:buttonTint="@color/colorPrimary" />
引起的意外问题错字。
答案 2 :(得分:4)
我猜你可以使用Twig attribute
函数。
答案 3 :(得分:3)
我解决这个问题的方法:
创建占位符数组(x)。像:
# Options
$placeholders = array(
'placeholder1' => 'A',
'placeholder2' => 'B',
'placeholder3' => 'C',
);
# Send to View ID invoice
$id_placeholder = 2;
发送视图和模板调用中的两个变量:
{{ placeholders["placeholder" ~ id_placeholder ] }}
此印刷品&#34; B&#34;。
我希望这对你有所帮助。
答案 4 :(得分:0)
我找到了解决方案:
attribute(_context, 'placeholder'~invoice.id)