我构建了一个树枝扩展来实现这一点。目标是将数组和属性赋予树枝扩展并计算结果。
首先,注册服务:
affiliate_dashboard.twig.propertysum:
class: AffiliateDashboardBundle\Service\PropertySum
public: false
tags:
- { name: twig.extension }
然后实现 TwigExtension:
命名空间 AffiliateDashboardBundle\Service;
class PropertySum extends \Twig_Extension
{
public function getFilters()
{
return array(
new \Twig_SimpleFilter('propertySum', array($this, 'propertySum')),
);
}
public function propertySum($collection, $property)
{
$sum = 0;
$method = 'get' . ucfirst($property);
foreach ($collection as $item) {
if (method_exists($item, $method)) {
$sum += call_user_func(array($item, $method));
}
}
return $sum;
}
public function getName()
{
return 'property_sum';
}
}
之后,您可以轻松计算特定集合的属性的总和。还处理教义关系。示例用法:
{{ blogpost.affiliateTag.sales|propertySum('revenue') }}
完毕!