MV framework logo
  • Архитектура
  • Философия
  • Админ панель
  • Поддержка
  • Обратная связь
Документация
Скачать .zip версия 3.2.0 от 25.12.2024
  • Архитектура
  • Философия
  • Админ панель
  • Поддержка
  • Обратная связь
Начало работы
  • Установка и запуск
  • Структура папок
  • Запуск простого сайта
  • Предустановленные модели
  • SQLite начало работы
  • Системные настройки
  • Миграции
  • Отладка
Модели
  • Общие принципы моделей
  • Типы данных
  • Настройка модели
  • Простые модели
  • Внешние ключи
  • Деревья
  • Многие ко многим
  • Группа
  • Управление записями
  • Управление простыми моделями
  • Дополнительные возможности
Шаблоны и маршрутизация
  • Общие принципы шаблонов
  • Объект класса Router
  • Объект MV
  • Создание нового шаблона
  • Вывод данных в шаблоне
  • Объект класса Record
  • Файлы и изображения
  • Дата и время
  • Редиректы и Http
  • Отправка email
  • Специальные методы
Формы
  • Создание форм
  • Настройка полей формы
  • Валидация полей формы
  • Безопасность форм
  • Работа с данными формы
  • Использование данных из моделей
  • Методы форм
SQL запросы
  • Конструктор запросов
  • Прямые запросы
  • Постраничная разбивка
  • Сортировка
  • Фильтрация
Дополнительно
  • AJAX
  • Плагины
  • Кэширование
  • Безопасность
  • Дополнения к административной панели
Документация
Начало работы
  • Установка и запуск
  • Структура папок
  • Запуск простого сайта
  • Предустановленные модели
  • SQLite начало работы
  • Системные настройки
  • Миграции
  • Отладка
Модели
  • Общие принципы моделей
  • Типы данных
  • Настройка модели
  • Простые модели
  • Внешние ключи
  • Деревья
  • Многие ко многим
  • Группа
  • Управление записями
  • Управление простыми моделями
  • Дополнительные возможности
Шаблоны и маршрутизация
  • Общие принципы шаблонов
  • Объект класса Router
  • Объект MV
  • Создание нового шаблона
  • Вывод данных в шаблоне
  • Объект класса Record
  • Файлы и изображения
  • Дата и время
  • Редиректы и Http
  • Отправка email
  • Специальные методы
Формы
  • Создание форм
  • Настройка полей формы
  • Валидация полей формы
  • Безопасность форм
  • Работа с данными формы
  • Использование данных из моделей
  • Методы форм
SQL запросы
  • Конструктор запросов
  • Прямые запросы
  • Постраничная разбивка
  • Сортировка
  • Фильтрация
Дополнительно
  • AJAX
  • Плагины
  • Кэширование
  • Безопасность
  • Дополнения к административной панели
MV tracker

Постраничная разбивка

Для разбиения длинного списка записей на страницы в любой модели можно создать объект класса Paginator. Для этого необходимо вызвать метод runPaginator($total, $limit), где $total - общее количество записей, $limit - количество записей на страницу.

//Файл шаблона в папке views/...
//Подсчет активных записей в таблице
$total_active = $mv -> events -> countRecords(['active' => 1]);

//Запуск разбивки по 10 записей на страницу 
$mv -> events -> runPaginator($total_active, 10);

//Теперь можно посмотреть состояние объекта Paginator
Debug::pre($mv -> events -> paginator -> getState());

Таким образом, теперь в функцию вывода событий в модели Events мы можем добавить постраничную разбивку. Более подробно об извлечении записей написано в разделе Конструктор запросов.

public function displayEvents()
{
    $rows = $this -> select([
        'order->desc' => 'date',
        'active' => 1,
        'limit->' => $this -> paginator -> getParamsForSelect()
    ]);
    
    ...
}

Для вывода списка ссылок на другие страницы используется метод display() класса Paginator.

//$path - URL к которому будут добавляться номера страниц ('/news', '/catalog/books') 
$path = $mv -> root_path.'events';
echo $mv -> events -> paginator -> display($path);
Добавление значения root_path при построении ссылок необходимо если ваш проект, например на локальном хосте развернут в подпапке, а на рабочем будет в корне сервера.

Итоговый вид шаблона для отображения списка событий.

<?
$total_active = $mv -> events -> countRecords(['active' => 1]);
$mv -> events -> runPaginator($total_active, 10);
$path = $mv -> root_path.'events';

include $mv -> views_path.'main-header.php';
?>
<div id='content'>
    <? echo $mv -> events -> display(); ?>
    <div class='paginator'>
        <? echo $mv -> events -> paginator -> display($path); ?>    
    </div>         
</div>
<?
include $mv -> views_path.'main-footer.php';
?>

Методы объекта Paginator

  • getState() - возвращают массив параметров пагинации
  • setLimit($limit), setTotal($total) - устанавливают лимит и общее количество элементов, пересчитывают интервалы
  • display($path) - вывод списка ссылок пагинации, $path - url к которому добавляется GET параметр пагинации
  • displayLimits($limits, $path [, $format = ‘links’]) - выводит список ссылок либо options с параметрами лимитов
  • hasPages() - проверяет есть ли интервалы, количество интервалов > 1
  • checkPrevNext($type) - проверяет есть ли следующая / предыдущая страница от текущей, параметр $type должен иметь значение 'next' или 'prev'
  • displayPrevLink($caption, $path) - выводит ссылку на предыдущую страницу если она существует, $caption - текст ссылки, $path - url, к которому будет добавлен параметр вида 'page=3'
  • displayNextLink($caption, $path) - аналогично предыдущей функции выводит ссылку на следующую страницу
  • addUrlParams($path) - добавляет GET параметр вида 'page=7' (текущую страницу) к переданному URL. Обычно используется для переброски параметров постраничной разбивки в другие модули, например сортировщик или фильтр.
  • getUrlParams() - возвращает GET параметр вида 'page=12' (текущую страницу), если общее количество страниц > 1

Ниже приведен пример отображения списка страниц в шаблоне с учетом ссылок на следующую или предыдущую страницу.

<?
...

$path = $mv -> root_path.'events';
include $mv -> views_path.'main-header.php';
?>
<div id='content'>
    <? echo $mv -> events -> display(); ?>

    <? if($mv -> events -> paginator -> hasPages()): ?>
    <div class='paginator'>
        <span class='title'>Страница:</span>
        <?
            echo $mv -> events -> paginator -> displayPrevLink('предыдущая', $path);
            echo $mv -> events -> paginator -> display($path);
            echo $mv -> events -> paginator -> displayNextLink('следующая', $path);
        ?>
    </div>
    <? endif; ?>
</div>
<?
include $mv -> views_path.'main-footer.php';
?>

Предыдущий раздел

Прямые запросы

Следующий раздел

Сортировка
MV workshop banner
MV tracker

© 2014-2025, MV framework team

English MV tracker project Github

Поделиться