在夏天之上的枝杈总和

omg*_*oha 7 symfony twig

我对树枝很新,我知道可以在模板中添加值并将它们收集到变量中.但我真正需要的是在总结它们之前在模板中显示夏天的值.我需要像旧symfony中的插槽一样的东西.或者在php中我可以通过ob_start()来做到这一点.不知怎的,它可能在树枝上?

我会喜欢这样的东西.

sum is: {{ sum }} {# obviously it is 0 right here, but i want the value from the calculation #}

{# some content.. #} 

{% set sum = 0 %}

{% for r in a.numbers}

   {% set sum = sum + r.number %}

{% endfor %}
Run Code Online (Sandbox Code Playgroud)

小智 11

您可以通过添加额外的过滤器来扩展树枝http://symfony.com/doc/current/cookbook/templating/twig_extension.html

在您的情况下,您可以使用array_sum函数:

public function getFilters()
{
    return array(
        new \Twig_SimpleFilter('sum', 'array_sum'),
    );
}
Run Code Online (Sandbox Code Playgroud)


小智 6

如果您不想使用控制器并想在树枝中进行求和,则尝试使用set命令:

{# do loop first and assign whatever output you want to a variable #}
{% set sum = 0 %}    
{% set loopOutput %}               
    {% for r in a.numbers}            
       {% set sum = sum + r.number %}        
    {% endfor %}    
{% endset %}

 sum is: {{ sum }} 

{# some content.. #} 

{{ loopOutput }}
Run Code Online (Sandbox Code Playgroud)

我认为循环位于特定位置,因为它旨在将某些内容输出到模板中,这使您可以重新排列加载顺序,同时仍按需要显示。