@ruslannasrutdinov

Yii 2. Два listview на одной странице. Как сделать постраничный навигатор для каждого listview в отдельности?

Нужно сделать постраничный навигатор для каждого listview в отдельности. В данный момент, если переключаю страницу в одном listview на вторую, переключаются оба listview.

Код контроллера.
$provider_top = new ActiveDataProvider([
            'query' => Object::find()->where(['status' => 1])->orderBy(['visits'=>SORT_DESC]),
            'pagination' => [
                'pageSize' => 6,
            ],
        ]);
$provider_new = new ActiveDataProvider([
            'query' => Object::find()->where(['status' => 1])->orderBy(['added_on'=>SORT_DESC]),
            'pagination' => [
                'pageSize' => 6,
            ],
        ]);
        
        return $this->render('index',['provider_top'=>$provider_top, 'provider_new'=>$provider_new]);


Код вьюхи
<?=
                ListView::widget([
                    'dataProvider' => $provider_top,
                    'itemView' => '_view',
                    'summary' => '',
                    'options' => ['class'=>'row'],
                    'itemOptions' => ['class'=>'col-md-4 city-item']
                ])

?>

<?=
                ListView::widget([
                    'dataProvider' => $provider_new,
                    'itemView' => '_view',
                    'summary' => '',
                    'options' => ['class'=>'row'],
                    'itemOptions' => ['class'=>'col-md-4 city-item']
                ])

?>
  • Вопрос задан
  • 2948 просмотров
Решения вопроса 1
padavan
@padavan
Нужно изменить параметр pageParam в объекта yii\data\Pagination

$provider_top = new ActiveDataProvider([
            'query' => Object::find()->where(['status' => 1])->orderBy(['visits'=>SORT_DESC]),
            'pagination' => [
                'pageParam' => 'page-top', # <-------------
                'pageSize' => 6,
            ],
        ]);
$provider_new = new ActiveDataProvider([
            'query' => Object::find()->where(['status' => 1])->orderBy(['added_on'=>SORT_DESC]),
            'pagination' => [
                'pageParam' => 'page-new', # <-------------
                'pageSize' => 6,
            ],
        ]);

www.yiiframework.com/doc-2.0/yii-data-pagination.html
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@corpsepk
Оф. доки, с ListView всё аналогично:

Multiple GridViews on one page
use yii\grid\GridView;

$userProvider->pagination->pageParam = 'user-page';
$userProvider->sort->sortParam = 'user-sort';

$postProvider->pagination->pageParam = 'post-page';
$postProvider->sort->sortParam = 'post-sort';

echo '<h1>Users</h1>';
echo GridView::widget([
    'dataProvider' => $userProvider,
]);

echo '<h1>Posts</h1>';
echo GridView::widget([
    'dataProvider' => $postProvider,
]);
Ответ написан
Комментировать
@lycifer3
Не подскажете тот же вопрос только с scrollPager появляется только одна кнопка для скролла но подгружает обе сущьности хоть и pageParam у них разные
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы