Пагинация MVC

JetNet

Постоялец
Регистрация
23 Авг 2015
Сообщения
50
Реакции
13
Доброго времени.

Изучаю MVC, написал приложение, все работает как надо, но встал вопрос в постраничной навигации. Гугл выдает огромное кол-во ссылок, но все рецепты реализовать не получается.

Принцип работы следующий:
В модели основные функции работы с БД
Контроллер формирует ссылки и отправляет данные в Представление
Представление принимает данные и показывает пользователю.

Помогите реализовать класс пагинации и вывод.
 
Последнее редактирование:
Спасибо. Классов я встречал много готовых, проблема в том, что я не понимаю, как их интегрировать в свою модель.
 
Принцип то простой, см. код инициализации

1. Конструктор класса получает количество записей в sql-запросе

$pages = new Pagination(['totalCount' => $countQuery->count()]);

2. При создании моделей возвращает параметры выборки текущей страницы (offset и limit) обратно в sql-запрос

$models = $query->offset($pages->offset)
->limit($pages->limit)
->all();

Для просмотра ссылки Войди или Зарегистрируйся
Количество записей на странице (pageSize) при это берется по умолчанию.
Но можно точно также задать через конструктор или после конструктора

3. Экземпляр класса передается в виджет, которому при рендере возвращает список ссылок навигации методом getLinks

echo LinkPager::widget([
'pagination' => $pages,
]);

То есть, он используется в контроллере при создании модели и в виде для рендера пейджера.
Его не нужно интегрировать в модель

Прежде чем писать свой MVC-движок, полезно разобрать, как работают общеизвестные yii, симфони, лара
Может отпадет желание этим заниматься, все уже придумано
 
Последнее редактирование:
Зачем пагинация в контроллере!? Данный функционал (вызов класса и передача парамтеров) нужны только в модели. Контроллера может и не быть вообще.
 
Я в итоге контроллер не задействовал.
 
Назад
Сверху