Как программно получить дополнительную строку в view-таблице? Д8

Главные вкладки

Аватар пользователя kompospec kompospec 12 апреля 2021 в 7:53

Как программно получить дополнительную строку в view-таблице?

Есть таблица:

http://russkiyslovar.ru/d8/myw1

Сделана во Вьюхе. В ней только один столбец - Время.

Его нужно просуммировать - вроде уже могу.

Но его и нужно ещё правильно расположить ВНУТРИ таблицы

Как? Спасибо.

Лучший ответ

Аватар пользователя OldWarrior OldWarrior 12 апреля 2021 в 14:46
1

Удивляет ваше стремление городить какие-то особо квадратно-колёсные велосипеды. Я же подсказывал решение с альтерингом выходной таблицы: https://drupal.ru/comment/747877#comment-747877. Используйте его, добавив там же ряд для результата расчёта.

Или можно создать пустое поле а-ля global custom text в подвале view и писать результат в него.

Или (что логичнее всего в вашем случае) просто использовать модуль https://www.drupal.org/project/views_aggregator . И ничего не кодировать.

Комментарии

Аватар пользователя OldWarrior OldWarrior 12 апреля 2021 в 14:46
1

Удивляет ваше стремление городить какие-то особо квадратно-колёсные велосипеды. Я же подсказывал решение с альтерингом выходной таблицы: https://drupal.ru/comment/747877#comment-747877. Используйте его, добавив там же ряд для результата расчёта.

Или можно создать пустое поле а-ля global custom text в подвале view и писать результат в него.

Или (что логичнее всего в вашем случае) просто использовать модуль https://www.drupal.org/project/views_aggregator . И ничего не кодировать.

Аватар пользователя kompospec kompospec 12 апреля 2021 в 19:25

OldWarrior wrote:
Удивляет ваше стремление городить какие-то особо квадратно-колёсные велосипеды. Я же подсказывал решение с альтерингом выходной таблицы: https://drupal.ru/comment/747877#comment-747877. Используйте его, добавив там же ряд для результата расчёта.
Или можно создать пустое поле а-ля global custom text в подвале view и писать результат в него.
Или (что логичнее всего в вашем случае) просто ис

1. Ваш код не работает. Не знаю почему.
2. Ваш код скорее всего работает с объектом Вьюю. - это я уже умею. Причём в 2 вариантах. Но я получаю объект. А как мне в этот объект добавить строку? Про это сейчас вопрос.

Аватар пользователя OldWarrior OldWarrior 12 апреля 2021 в 19:54

kompospec wrote: 1. Ваш код не работает. Не знаю почему.

Хук template_preprocess_views_view_table работает во всей ветке 8.x и даже в 9.x . Хотя бы ради интереса посмотрите код и описание функции по ссылке и обратите внимание, сколько всего там можно сделать.

kompospec wrote: 2. Ваш код скорее всего работает с объектом Вьюю

"Мой" код работает с препроцессом таблицы view. В неё можно добавлять свои ряды - так же, как и с любой другой таблицей.

kompospec wrote: А как мне в этот объект добавить строку? Про это сейчас вопрос.

Выше всё написал уже.

Аватар пользователя kompospec kompospec 12 апреля 2021 в 19:28

OldWarrior wrote: Или можно создать пустое поле а-ля global custom text в подвале view и писать результат в него.

Нужно чтоб именно под этим столбцом появлялась сумма. Повторю. Я упростил задание. Таблица очень большая и там не только суммировать надо.

Аватар пользователя kompospec kompospec 12 апреля 2021 в 19:30

Таблица выводится с выбора различных полей Юзером
С различными сортировками.
Вся эта таблица на нескольких страницах

Аватар пользователя kompospec kompospec 12 апреля 2021 в 19:34

kompospec wrote: 1. Ваш код не работает. Не знаю почему.

А этот работает.
function dummy_views_pre_render(\Drupal\views\ViewExecutable $view) {
// Scramble the order of the rows shown on this result page.
// Note that this could be done earlier, but not later in the view execution
// process.
//print_r($view->result);exit();
shuffle($view->result);
}

А так:

function dummy_views_pre_render(&$view) {

Не работает

Аватар пользователя kompospec kompospec 12 апреля 2021 в 19:38

voviko wrote:
Как вариант попробуйте это views_cumulative_field
в views-view-table.html.twig в конце добавьте {{ (rows|last).columns.field_cumulative_field }}
views-view-table.html.twig - всё же для views создайте свой темплейт

Подождите. Ведь можно же прям в Теме оформления добавить эту строку!