Как сделать пагинацию с многоточием в yii2?

Пользователь

от greyson , в категории: PHP , год назад

Как сделать пагинацию с многоточием в yii2?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от kameron , год назад

@greyson 

В Yii2 пагинацию с многоточием можно реализовать, используя виджет LinkPager и настройки пагинации.


Сначала нужно определить настройки пагинации в модели или провайдере данных, используемых в вашем представлении. Это можно сделать, установив свойства pageSize и totalCount. Например:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
use yiidataPagination;

$query = Article::find();
$pagination = new Pagination([
    'totalCount' => $query->count(),
    'pageSize' => 10,
]);
$articles = $query->offset($pagination->offset)
    ->limit($pagination->limit)
    ->all();


Затем в вашем представлении вы можете использовать виджет LinkPager для отображения пагинации с многоточием. Установите свойство hideOnSinglePage в значение false, чтобы виджет отображался даже в том случае, если всего одна страница. Затем установите свойство maxButtonCount в желаемое количество кнопок-ссылок на страницы, и свойство prevPageLabel и nextPageLabel для задания текста ссылок на предыдущую и следующую страницы.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
use yiiwidgetsLinkPager;

echo LinkPager::widget([
    'pagination' => $pagination,
    'hideOnSinglePage' => false,
    'maxButtonCount' => 5,
    'prevPageLabel' => '←',
    'nextPageLabel' => '→',
    'options' => ['class' => 'pagination'],
    'activePageCssClass' => 'active',
    'disabledPageCssClass' => 'disabled',
]);


Когда вы используете виджет LinkPager вместе с настройками пагинации, как указано выше, виджет автоматически отобразит многоточие, если текущая страница находится достаточно далеко от края списка страниц. Вы можете настроить это поведение, установив свойства ellipsisPageCssClass и ellipsisPageLabel для задания класса CSS и текста многоточия.