@MarkLb

Как сделать общую сумму в GridView Yii2 с учётом фильтров?

Необходимо в GridView в футере выводить сумму значений определенных столбцов в формате:
Сумма значений столбцов в GridView/Общая сумма значений.
Пример

У нас есть столбец "Просмотры". Всего 5 записей, суммарно их кол-во просмотров - 1000.
В GridView 2 записи, в сумме у них просмотров - 200.
На выходе имеем:
200/1000

Сумма значений столбцов в GridView - реализована.
Реализация

Класс:
class NumberColumn extends DataColumn
{
    private $total = 0;

    public function getDataCellValue($model, $key, $index)
    {
        $value = parent::getDataCellValue($model, $key, $index);
        $this->total += $value;
        return $value;
    }

    protected function renderFooterCellContent()
    {
        return $this->grid->formatter->format($this->total, $this->format);
    }
}

Ячейка в columns GV:
[
                'class' => \app\components\NumberColumn::class,
                'attribute' => 'views',
            ],



Остаётся вывод общей суммы значений, но чтобы применимы были фильтры.
Пример

У нас два столбца "Views" и "Country".
Записи:
1. V: 100, Country: RU.
2. V: 100, Country: RU.
3. V: 100, Country: RU.
4. V: 200, Country: USA.

В GridView, 2 записи(1, 2), включен фильтр Country=RU.
Итоговое число: 200/300.
Если бы фильтр не был бы включен, итог был бы: 200/500.


Каким образом этого можно добиться? По-сути, необходимо как-то подхватывать фильтры searchModel'и, либо проводить подсчёт в ней.
  • Вопрос задан
  • 249 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы