我对小枝有点陌生,我知道可以在模板中把值加起来,然后在变量中收集它们。但我真正需要的是在总结它们之前先显示模板中的求和值。我需要一些像旧塞福尼的插槽。或者在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 %}发布于 2014-02-19 14:44:53
可以通过添加额外的过滤器( extension.html )来扩展树枝。
在您的例子中,您可以使用array_sum函数:
public function getFilters()
{
return array(
new \Twig_SimpleFilter('sum', 'array_sum'),
);
}发布于 2014-05-23 10:09:05
如果您不想使用控制器,并且希望在树枝中进行求和,那么尝试使用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 }}我假设循环在一个特定的位置,因为它的目的是将一些东西输出到模板中,这允许您重新排列加载顺序,同时仍然按需要显示。
发布于 2019-07-16 17:13:43
在Twig 1.41和2.10中添加了一个reduce 过滤器,并添加了
reduce过滤器使用箭头函数迭代地将序列或映射缩减到单个值,以便将其还原为单个值。箭头函数接收上一次迭代的返回值和序列或映射的当前值: {% set numbers = 1,2,3 %} {数字\减少((进位,v) =>进位+ v) }} {#输出6}reduce过滤器将一个initial值作为第二个参数: {[数字\} {#输出16 } 注意,箭头函数可以访问当前上下文。
参数:
array:序列或映射arrow:箭头函数initial:初始值https://stackoverflow.com/questions/18933753
复制相似问题