我在twig中有一些变量
placeholder1 placeholder2 placeholderx
为了调用它们,我循环遍历对象数组“invoices”
{% for invoices as invoice %} need to display here the placeholder followed by the invoice id number {{ placeholedr1 }}
vktxenjb1#
我也遇到了同样的问题-使用第一个答案,经过一些额外的研究发现{{ attribute(_context, 'placeholder'~invoice.id) }}应该可以工作(_context是全局上下文对象,包含所有名称的对象)
{{ attribute(_context, 'placeholder'~invoice.id) }}
_context
fslejnso2#
除了使用attribute function,您还可以使用常规括号表示法访问_context数组的值:
attribute
{{ _context['placeholder' ~ id] }}
我个人会使用这一个,因为它更简洁,在我看来更清晰。如果环境选项strict_variables设置为true,则还应使用default过滤器:
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:
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 %}
使用default过滤器,您还可以提供默认值,例如null或字符串:
null
{{ _context['placeholder' ~ id]|default(null) }} {{ attribute(_context, 'placeholder' ~ id)|default('Default value') }}
如果省略默认值(即使用|default而不是|default(somevalue)),则默认值将为空字符串。strict_variables默认为false,但我更喜欢将其设置为true,以避免例如打字错误导致的意外问题。
|default
|default(somevalue)
false
uqdfh47h3#
我想您可以使用Twig attribute函数。https://twig.symfony.com/doc/3.x/functions/attribute.html
7gyucuyw4#
我对这个问题的解决方案:创建占位符(x)的数组。例如:
# Options $placeholders = array( 'placeholder1' => 'A', 'placeholder2' => 'B', 'placeholder3' => 'C', ); # Send to View ID invoice $id_placeholder = 2;
在模板调用中同时发送用于查看和的变量:
{{ placeholders["placeholder" ~ id_placeholder ] }}
这是B。希望这对你有帮助。
unhi4e5o5#
我找到了解决办法:
attribute(_context, 'placeholder'~invoice.id)
5条答案
按热度按时间vktxenjb1#
我也遇到了同样的问题-使用第一个答案,经过一些额外的研究发现
{{ attribute(_context, 'placeholder'~invoice.id) }}
应该可以工作(_context
是全局上下文对象,包含所有名称的对象)fslejnso2#
除了使用
attribute
function,您还可以使用常规括号表示法访问_context
数组的值:我个人会使用这一个,因为它更简洁,在我看来更清晰。
如果环境选项
strict_variables
设置为true
,则还应使用default
过滤器:否则,如果变量不存在,您将得到
Twig_Error_Runtime
异常。例如,如果您有变量foo
和bar
,但试图输出变量baz
(它不存在),您将得到带有消息Key "baz" for array with keys "foo, bar" does not exist
的异常。检查变量是否存在的更详细的方法是使用
defined
test:使用
default
过滤器,您还可以提供默认值,例如null
或字符串:如果省略默认值(即使用
|default
而不是|default(somevalue)
),则默认值将为空字符串。strict_variables
默认为false
,但我更喜欢将其设置为true
,以避免例如打字错误导致的意外问题。uqdfh47h3#
我想您可以使用Twig
attribute
函数。https://twig.symfony.com/doc/3.x/functions/attribute.html
7gyucuyw4#
我对这个问题的解决方案:
创建占位符(x)的数组。例如:
在模板调用中同时发送用于查看和的变量:
这是B。
希望这对你有帮助。
unhi4e5o5#
我找到了解决办法: