{{tag>yii2 DataProvider}}

====== Yii2 ActiveDataProvider / Page / pagination, sort ======

В основном применяется для вывода через Ajax

Пример ActiveDataProvider с указанием пейджера и сортировки по умолчанию
<code php>
use yii\data\ActiveDataProvider;

            $provider = new ActiveDataProvider([
                'query' => Form::find()->where(['id' => $forms]),
                'sort'=>array(
                    'defaultOrder'=>['id' => SORT_DESC],
                ),
                'pagination' => [
                    'pageSize' => 20,
                    //'pageParam' => 'page',
                    'validatePage' => false,
                ],
                
            ]);
            
            return $provider->getModels();
</code>

====== Infinite Ajax Scroll ======

Ajax подгрузка контента (пейджинг) без перезагрузки страниц

https://github.com/kop/yii2-scroll-pager

<code php>
use yii\

echo ListView::widget([
     'dataProvider' => $dataProvider,
     'itemOptions' => ['class' => 'item'],
     'itemView' => '_item_view',
     'pager' => ['class' => \kop\y2sp\ScrollPager::className()]
]);
</code>

===== Pjax =====

Загрузка контента страниц без перезагрузки страницы с сохранением истории переходов
Урл в строке браузенра изменяются

<code php>
Pjax::begin();
echo ListView::widget([
     'dataProvider' => $dataProvider,
     'itemOptions' => ['class' => 'item'],
     'itemView' => '_item_view',
     'pager' => ['class' => \kop\y2sp\ScrollPager::className()]
]);
Pjax::end();
</code>