@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 и текста многоточия.