Всем привет!
Застрял вот с чем. Есть данные, что приходят с микросервиса (вызываются через методы в контроллере). Микросервис отдает их с offset и limit само собой. Затем они слегка пересобираются и получается массив. Массив отдается через arrayDataProvider во view.
Охота как-то связать пагинацию в arrayDataProvider c offset и limit в запросах к микросервису. Можно передавать как allmodels итог работы метода из микросервиса и связать текущую страницу и pageSize с offset и limit метода, но тогда сколько вернет метод столько в gridView и попадет и всегда будет одна страница без возможности выбрать другую. Если устанавливать pageSize отличный от limit в методе, то тогда бред с переключением по страницам начнется.
Можно конечно сразу вытащить все данные методом в массив, но это прямо совсем криво.
Есть какие-то решения или надо писать свой dataProvider?
прямо вчера решал эту проблему, но делал не через грид вью, а в жсе. Решил просто - выключил пагинатор в дата провайдере, а лимит и оффсет закинул прямо в квери билдер.
Если прямо очень надо чтобы был пагинатор.
То делаешь конфиг типа:
$limit = $request->get('limit', 20);
$offset = $request->get('offset', 0)l
$page = (int) ($offset / $limit) + 1;
// ... тут дата профайдер
[
'paginagion' => [
'pageSize' => $limit,
'defaultPageSize' => $limit,
'page' => $page
]