Как выполнить дополнительные вычисления для элементов, отображаемых на текущей странице в 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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