Задать вопрос

Ajax подгрузка в GridView Yii2?

Добрый день. В проекте на Yii2 для вывода данных используется Gridview.
Собственно вопрос: как в Yii2 сделать чтоб вместо пагинации, была подгрузка данных в таблицу при скролле?
Подскажите решение или пните в нужном направлении.
Гугл выдает не то что нужно:( Заранее спасибо.
  • Вопрос задан
  • 2073 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
GridView тут не при чем, он просто строит таблицу на основе данных, которые Вы ему кормите, а кормите Вы ему данные в ActiveDataProvider, у которого есть pagination, в котом содержится объект yii\data\Pagination. В нем есть данные о текущем кол-ве записей, значит просто обворачиваем все в pjax и пишем js который будет по скролу до какого-то момента, запускать pjax уже по новому url, с новым limit.
Есть готовое решение, не пробовал, но звезд много, так что должно работать:
https://github.com/kop/yii2-scroll-pager
Гугл не дает Вам результатов, потому что ищите gridView , а он не при чем для данной задачи, надо искать "yii2 scroll pager" или что-то подобное
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@BorisKorobkov
Web developer
Гуглите "pjax".
Как его использовать при клике на пагинацию - например, https://habrahabr.ru/post/225823/
Для автоподгрузки при скроллинге придется при скроллинге эмулировать клик на нужную пагинацию.
Ответ написан
Комментировать
@artursharipov
У меня ваш пример только с кнопкой "Показать еще". Подправьте мой код под себя

1) Скройте пагинацию

2) Это под GridView
<?php
echo Html::a('Показать ещё', [Url::to('').'#ddd'], [
   class' => 'btn btn-default',
   'data' => [
      'method' => 'post',
      'params' => [
         'more' => $more,
      ],
      'pjax' => 1,
   ],
   'id' => 'ddd',
   ]);
?>


3) Это в контроллер
if($more = (int)Yii::$app->request->post()['more']){
    $dataProvider->pagination->pageSize += $more;
}

return $this->render('index',[
   /**/
   'more' => $more > 0 ? $more + 10 : 10,
]);


Всё смысл такой, изначально pageSize по умолчанию, а кнопка показать ещё post с параметром more который будет увеличиваться на 10 при каждом нажатии. Url::to#dd для того чтобы фильтр сохранился и был скролл к кнопке.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы