Мы сделали это следующим образом, и он работает как шарм
Шаг 1: Добавлено двух методов в orderAdmin
public function getTemplate($name)
{
if($name == 'list') {
return 'AppBundle:OrderAdmin:list.html.twig';
}
return parent::getTemplate($name); stub
}
public function getSumOf($field)
{
$datagrid = $this->getDatagrid();
$datagrid->buildPager();
$query = $datagrid->getQuery();
$query->select('SUM(' . $query->getRootAlias() . '.' . $field . ') as total');
$query->setFirstResult(null);
$query->setMaxResults(null);
$result = $query->execute(array(), \Doctrine\ORM\Query::HYDRATE_SINGLE_SCALAR);
return $result;
}
Шаг 2: Создал файл шаблона list.html.twig
{% extends 'SonataAdminBundle:CRUD:base_list.html.twig' %}
{% block list_header %}
<div class="pull-right" style="margin-right: 10px;">
<label for="{{ admin.uniqid }}_sum_of_orders" class="control-label">Grand Total: </label>
<label class="control-label"> S$ {{ admin.getSumOf('orderAmount') }} </label>
</div>
{% endblock %}