如何在Twig中使用另一个值的值设置变量的名称? 我认为它会是这样的:
$count = 1;
$args["answer$count"]
但这不起作用。从中创建一个字符串将打破循环(因为它不搜索字符串) 我知道如何在PHP中执行此操作以便澄清,这是我想要实现的目标:
$args["answer1"]
返回
$('#mydiv').on('scroll', function(){
function infiniScroll(this);
});
function infiniScroll(mydiv){
console.log($(mydiv).scrollTop()+' + '+ $(mydiv).height()+' = '+ ($(mydiv).scrollTop() + $(mydiv).height()) +' _ '+ $(mydiv)[0].scrollHeight );
if($(mydiv).scrollTop() + $(mydiv).height() == $(mydiv)[0].scrollHeight){
console.log('bottom found');
if(!$.active){ //if there is no ajax call active ( last ajax call waiting for results ) do again my ajax call
myAjaxCall();
}
}
但这一次,不是用字符串而是操作性答案。
提前致谢!
Mats de Waard。
答案 0 :(得分:7)
您可以使用{% set queCount = loop.index %}
{% for row2 in _context['answer' ~ queCount] %}
变量
{{1}}
以下是关于_context和全局变量的the doc
答案 1 :(得分:0)
在这些情况下,您必须使用attribute()
功能:
{% for row2 in attribute(args, 'answer' ~ queCount) %}
...
{% endfor %}
更多信息:http://twig.sensiolabs.org/doc/functions/attribute.html
答案 2 :(得分:0)
如果环境选项strict_variables
设置为true
(默认值为false
,see docs),@ pbenard的答案将导致致命错误,如果变量不是不存在。例如,如果answer3
不存在,您可以得到如下内容:
致命错误:未捕获Twig_Error_Runtime:第9行“index”中不存在键“answer1,answer2,row,queCount,_parent,_seq,loop,_ key”的数组键“answer3”。
当该选项设置为false
时,未显示的变量将默认默认为null
。 (这就是你没有得到错误的原因。)
您可以通过default
过滤器提供默认值来避免此问题:
{% set queCount = loop.index %}
{% for row2 in _context['answer' ~ queCount]|default(null) %}
您也可以省略值甚至括号。然后该变量将默认为空字符串。最终结果是相同的,因为null
和空字符串都是假值,因此在for
循环中跳过它们。即这两个是平等和有效的:
{% for row2 in _context['answer' ~ queCount]|default() %}
{% for row2 in _context['answer' ~ queCount]|default %}
我认为通常最好将strict_variables
设置为true
以避免由例如false
引起的意外错误变量名称中的拼写错误。即使将其设置为default
,在这种情况下使用true
过滤器也是一件好事,以便稍后将选项设置为{{1}},而不必担心破坏现有代码。