Как выполнить дополнительные вычисления для элементов, отображаемых на текущей странице в Yii2 ArrayDataProvider?Php

Кемеровские программисты php общаются здесь
Anonymous
Как выполнить дополнительные вычисления для элементов, отображаемых на текущей странице в Yii2 ArrayDataProvider?

Сообщение Anonymous »

Я создаю ArrayDataProvider следующим образом:

Код: Выделить всё

$dataProvider = new ArrayDataProvider([
'allModels' => $data,
'sort' => [
'attributes' => [
'quantity',
],
'defaultOrder' => [
'quantity' => SORT_DESC,
]
],
'pagination' => [
'pageSize' => 10
]
]);
Предположим, что массив $data содержит 1000 элементов. Я хочу выполнить ресурсоёмкие вычисления, но делать их для всех 1000 элементов слишком медленно. Итак, я хотел бы применить эти вычисления только к элементам, отображаемым на текущей странице, в данном случае к первым 10 элементам.
Чтобы добиться этого, я добавил следующий код:

Код: Выделить всё

$allModels = $dataProvider->getModels();

foreach ($allModels as &$model) {
// Some complex calculations with value assignment
$model['value'] = 123;
}
Однако, когда я передаю $dataProvider в GridView, отображаемые элементы на странице не содержат ключ значения, который я создал ранее. Та же проблема возникает, если я сразу вывожу $dataProvider->getModels() после обработки.
Как я могу выполнить дополнительные вычисления для ArrayDataProvider только для отображаемых элементов на текущей странице?

Подробнее здесь: https://stackoverflow.com/questions/789 ... ent-page-i

Вернуться в «Php»