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

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

1. Настройка пагинации в модели
---
Для начала вам необходимо настроить пагинацию в модели, с которой вы работаете. Для этого вам нужно добавить метод search() в вашей модели и настроить провайдер данных для пагинации. Пример:

public function search($params)
{
    $query = YourModel::find();

    $dataProvider = new ActiveDataProvider([
        'query' => $query,
        'pagination' => [
            'pageSize' => isset($params['per-page']) ? intval($params['per-page']) : 10,
        ],
    ]);

    // Дальше идет ваш код для фильтрации данных и прочего
    ...

    return $dataProvider;
}

2. Использование виджета LinkPager
---

После того, как вы настроили провайдер данных для пагинации в модели, вам нужно использовать виджет LinkPager в представлении (view), который будет генерировать динамические ссылки для пагинации.

use yiiwidgetsLinkPager;
<?= LinkPager::widget([
    'pagination' => $dataProvider->pagination,
]) ?>

3. Настройка параметров пагинации в контроллере
---

Теперь вам нужно настроить параметры пагинации в вашем контроллере, передать их в провайдер данных и передать провайдер в представление.

use yiidataActiveDataProvider;
public function actionIndex()
{
    $searchModel = new YourModelSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

    return $this->render('index', [
        'searchModel' => $searchModel,
        'dataProvider' => $dataProvider,
    ]);
}
<?= $this->render('_search', ['model' => $searchModel]) ?>

<?= LinkPager::widget([
    'pagination' => $dataProvider->pagination,
]) ?>

Теперь у вас должна быть настроена динамическая пагинация в Yii2. После выполнения этих шагов вы будете иметь рабочую пагинацию с динамическими ссылками для переключения между страницами.