Set Variable仅获取Symfony Twig中循环中的最后一个值

时间:2014-11-28 01:00:35

标签: symfony twig

我是Symfony的新手,我的树枝上有问题。我只是不知道该怎么做:(

 {% set trans_number = '' %}
   {% for tran in trans %}
     {% set trans_number = tran.transNumber %}
       {{dump(trans_number)}}
   // this is what I get when dumping inside the loop: string(10) "1073110793" string(10) "1073145793" string(12) "646721454679"
   {% endfor %}

但是当我试图将它转移到循环之外时:

    {% set trans_number = '' %}
   {% for tran in trans %}
     {% set trans_number = tran.transNumber %}
   {% endfor %}
  {{dump(trans_number)}}
  // I get only the last value string(12) "646721454679"

现在我的问题是,如何在循环外部访问分配给trans_number的所有值? 提前谢谢。

2 个答案:

答案 0 :(得分:2)

您可以通过变量范围更正并通过在循环之前声明trans_number来处理范围访问,但是您错误地解释set如何使用Twig,或者只是变量如何工作

当您使用set trans_number = tran.transNumber时,您每次只为trans_number变量分配一个新值。当您将dump移到循环外部时,您不再在每次迭代时转储trans_number的新值。

如果您希望在trans_number中构建值列表,则需要将trans_number初始化为列表并通过for循环的每次迭代追加到它:

{% set trans_number = [] %}
{% for tran in trans %}
    {% set trans_number = trans_number|merge([tran.transNumber]) %}
{% endfor %}
{{dump(trans_number)}}

答案 1 :(得分:0)

对于在问题标题中寻找问题答案的人

您可以使用最后过滤器

示例:

{{ dump( (trans|last) ) }}

来源:http://twig.sensiolabs.org/doc/filters/last.html