nepster-web
@nepster-web

Yii2 почему нумерация пагинации отстает на 1 страницу?

Реализовал пагинацию вот так:

public function actionArticles($page = 1)
	{
        $query = Blog::getArticles();
        $countQuery = clone $query;
        $pages = new Pagination(['totalCount' => $countQuery->count()]);
        $pages->page = $page;
        $models = $query->offset($pages->offset)
        ->limit($pages->limit)
        ->all();
        
        return $this->render('articles', [
            'articles' => $models,
            'pages' => $pages,
        ]);
    }


Все работает, за исключением одной детали, почему-то yii2 ведет счет страниц с 0 и когда я передаю 1 страницу, он показывает контент со 2 страницы.

Подскажите пожалуйста почему так происходит и что с этим делать (просто дописать строку $page -= 1)?
  • Вопрос задан
  • 3715 просмотров
Пригласить эксперта
Ответы на вопрос 2
Remmi
@Remmi
Не могу сказать, что моё предположение совершенно точное, но попробую объяснить.

В программировании счёт ведётся от нуля.

Варианта два:
1. Перестроить мозги на счёт от нуля, и прописать базовую страницу не 1, а 0, и для вывода на клиенте прибавлять единицу (чтобы люди видели не страницу №0, а обычную страницу №1).
2. Ничего не перестраивать, при вызове элемента в коде отнимать единицу (от $page) - и больше ничего не трогать. Дальше смотреть по тому, как будет выводиться на клиент.
Ответ написан
vyachin
@vyachin
Ищу работу
https://github.com/yiisoft/yii2/blob/master/framew... тут как бы прямо написано нумерация начинается с 0

а тут как все работает внутри https://github.com/yiisoft/yii2/blob/master/framew...

а можно параметр убрать из actionArticles, Pagination сам подхватит из. Имя параметра можно настроить https://github.com/yiisoft/yii2/blob/master/framew...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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