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

Сортировка

При выборке необходимых записей из таблицы модели можно сортировать результаты в нужном порядке. Если сортировка проводится только в одном направлении, то используется параметр, описанный в разделе Конструктор запросов.

//Сортировка по дате, вначале самые поздние
$rows = $mv -> events -> select(['order->desc' => 'date']);

//Сортировка по дате, вначале самые ранние
$rows = $mv -> events -> select(['order->asc' => 'date']);

//Самая ранняя запись
$record = $mv -> events -> find(['order->asc' => 'date']);

Динамическая сортировка

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

class Vacancy extends Model
{
    protected $name = 'Вакансии';

    protected $model_elements = [
        ['Активировать', 'bool', 'active'],
        ['Название', 'char', 'name', ['required' => true, 'min_max_length' => '2,40']],
        ['Дата создания', 'date', 'date'], 
        ['Зарплата', 'int', 'salary', ['positive' => true]],
        ['Описание', 'text', 'desc']
    ];
}

//Метод вывода списка вакансий
public function display($parent, $current_brand)
{
    $rows = $this -> select(['active' => 1]);
    $html = '';

    foreach($rows as $row)
    {            
        $html .= ...
    }

    return $html;
}

Сортировщик обычно запускается из шаблона и принимает на входе список возможных полей, и также можно передать поле и направление сортировки по умолчанию.

//Файл шаблона, например views/view-vacancies.php

//Вызов без сортировки по умолчанию
$mv -> vacancy -> runSorter(['date', 'name', 'salary']);

//Задана изначальная сортировка по дате
$mv -> vacancy -> runSorter(['date', 'name', 'salary'], 'date', 'desc');

Далее добавляем передачу параметров сортировки в запрос по извлечению записей.

public function display($parent, $current_brand)
{
    $params = $this -> sorter -> getConditions();
    $params['active'] = 1;
    $rows = $this -> select($params);

    ...
}

В шаблоне выводим ссылки, кликнув на которые будем запускать нужную сортировку. Активной ссылке будет присвоен соответствующий css класс.

$path = $mv -> root_path.'vacancies';

echo $mv -> vacancy -> sorter -> displayLink('date', 'Дата', $path);
echo $mv -> vacancy -> sorter -> displayLink('name', 'Название вакансии', $path);
echo $mv -> vacancy -> sorter -> displayLink('salary', 'Зарплата', $path);

В примере создается одна ссылка на каждое поле для сортировки в обе стороны. Можно создавать ссылку на каждый вид сортировки. Текущей ссылке будет присвоен класс active.

$path = $mv -> root_path.'vacancies';

//Если необходимо добавить парамерты пагинации
$path = $mv -> vacancy -> paginator -> addUrlParams($path);

echo $mv -> vacancy -> sorter -> displaySingleLink('name', 'asc', 'Название А-Я', $path);
echo $mv -> vacancy -> sorter -> displaySingleLink('name', 'desc', 'Название Я-А', $path);

//Сортировка по умолчанию меняется на противоположную
echo $mv -> vacancy -> sorter -> displayLink('salary', 'Зарплата', $path, 'reverse');

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

  • getField(), getOrder() - возвращают соответственно текущее поле сортировки и порядок сортировки
  • getConditions() - возвращает параметры сортировки для конструктора запросов
  • setParams($field, $order) - устанавливает текущие параметры сортировки
  • hasParams() - проверяет на наличие параметров сортировки, если поле и значение установлены то возвращает true
  • getUrlParams() - возвращает GET параметры текущей сортировки в виде ‘sort-field=price&sort-order=desc’
  • addUrlParams($path) - добавляет GET параметры вида 'sort-field=name&sort-order=asc'  к переданному URL. Обычно используется для переброски параметров сортировки в другие модули: постраничную разбивку, фильтрацию.
  • displayLink($field, $title [, $path, $reverse]), displaySingleLink($field, $order, $title [, $path]) - вывод ссылок сортировщика
  • getParamsForSQL() - возвращает часть SQL запроса вида 'ORDER BY `date` DESC' с текущими параметрами сортировки

В некоторых случаях изначальный порядок сортировки нужно изменить, например при сортировки по цене товаров в каталоге, чтобы при клике на ссылку 'Сортировать по цене' более дешевые товары были вначале списка. По умолчанию для целочисленного поля ставится сортировка по убыванию, чтобы сделать первичную сортировку по возрастанию, необходимо передать четвертый параметр в метод displayLink в виде 'reverse'.

$path = $mv -> root_path.'catalog/34';

echo $mv -> products -> sorter -> displayLink('price', 'Сортировать по цене', $path, 'reverse');

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

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

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

Фильтрация
MV workshop banner
MV tracker

© 2014-2025, MV framework team

English MV tracker project Github

Поделиться