MV framework logo
  • Архитектура
    • Философия
    • Технологии
    • CMF
    • История версий
  • Админ панель
  • Поддержка
  • Обратная связь
  • Примеры кода
    • Новостная лента
    • Слайдер с баннерами
    • Список с фильтрацией
    • Форма с загрузкой файла
    • AJAX форма на jQuery
    • Вопросы и ответы
    • Каталог с товарами
    • Авторизация пользователя
    • Регистрация пользователя
    • Личный кабинет пользователя
Скачать Версия 2.6 от 07.10.2022
Документация
  • Архитектура
    • Философия
    • Технологии
    • CMF
    • История версий
  • Админ панель
  • Поддержка
  • Обратная связь
  • Примеры кода
    • Новостная лента
    • Слайдер с баннерами
    • Список с фильтрацией
    • Форма с загрузкой файла
    • AJAX форма на jQuery
    • Вопросы и ответы
    • Каталог с товарами
    • Авторизация пользователя
    • Регистрация пользователя
    • Личный кабинет пользователя
Начало работы
  • Установка и запуск
  • Структура папок
  • Запуск простого сайта
  • Предустановленные модели
  • SQLite начало работы
  • Системные настройки
  • Миграции
Модели (models)
  • Общие принципы моделей
  • Типы данных
  • Настройка модели
  • Простые модели
  • Внешние ключи
  • Деревья
  • Многие ко многим
  • Группа
  • Управление записями
  • Управление простыми моделями
  • Дополнительные возможности
Шаблоны (views) и маршрутизация (routes)
  • Общие принципы шаблонов
  • Объект класса Router
  • Объект MV
  • Index, default и 404 шаблоны
  • Создание нового шаблона
  • Вывод данных в шаблоне
  • Объект класса Record
  • Файлы и изображения
  • Дата и время
  • Редиректы
  • Отправка email
  • Специальные методы
Формы
  • Создание форм
  • Настройка полей формы
  • Правила проверки полей формы
  • Проверка полей формы
  • Работа с данными формы
  • Использование данных из моделей
  • Методы форм
SQL запросы
  • Конструктор запросов
  • Прямые запросы
  • Постраничная разбивка
  • Сортировка
  • Фильтрация
  • Загрузка из csv файлов
Сессии и безопасность
  • Работа с сессиями
  • AJAX
  • Кэширование
  • Безопасность
  • Отладка
Плагины
  • Общие принципы плагинов
  • Дополнения к административной панели
Документация
Начало работы
  • Установка и запуск
  • Структура папок
  • Запуск простого сайта
  • Предустановленные модели
  • SQLite начало работы
  • Системные настройки
  • Миграции
Модели (models)
  • Общие принципы моделей
  • Типы данных
  • Настройка модели
  • Простые модели
  • Внешние ключи
  • Деревья
  • Многие ко многим
  • Группа
  • Управление записями
  • Управление простыми моделями
  • Дополнительные возможности
Шаблоны (views) и маршрутизация (routes)
  • Общие принципы шаблонов
  • Объект класса Router
  • Объект MV
  • Index, default и 404 шаблоны
  • Создание нового шаблона
  • Вывод данных в шаблоне
  • Объект класса Record
  • Файлы и изображения
  • Дата и время
  • Редиректы
  • Отправка email
  • Специальные методы
Формы
  • Создание форм
  • Настройка полей формы
  • Правила проверки полей формы
  • Проверка полей формы
  • Работа с данными формы
  • Использование данных из моделей
  • Методы форм
SQL запросы
  • Конструктор запросов
  • Прямые запросы
  • Постраничная разбивка
  • Сортировка
  • Фильтрация
  • Загрузка из csv файлов
Сессии и безопасность
  • Работа с сессиями
  • AJAX
  • Кэширование
  • Безопасность
  • Отладка
Плагины
  • Общие принципы плагинов
  • Дополнения к административной панели

Список с фильтрацией

Создаем файлы моделей models/price_categories.model.php и models/price_list.model.php

class Price_categories extends Model
{
    protected $name = "Разделы прайс листа";
   
    protected $model_elements = array(
        array("Активировать", "bool", "active", array("on_create" => true)),
        array("Название", "char", "name", array("required" => true)),
        array("Позиция", "order", "order")
    );
}

class Price_list extends Model
{
    protected $name = "Прайс лист";
 
    protected $model_elements = array(
        array("Активировать", "bool", "active", array("on_create" => true)),
        array("Название", "char", "name", array("required" => true)),
        array("Направление", "char", "department"),
        array("Категория", "enum", "category", array("foreign_key" => "Price_categories",
                                                     "order_asc" => "name")),
        array("Цена", "int", "price"),
        array("Позиция", "order", "order")
    );
}

Вносим название модели в файл config/models.php

$mvActiveModels = array('pages', 'blocks', ... , 'price_categories', 'price_list');

Создаем SQL таблицы в базе данных, после чего модели станут работать в административной панели

CREATE TABLE `price_categories` (
  `id` int(11) NOT NULL,
  `active` tinyint(4) NOT NULL,
  `name` varchar(250) NOT NULL,
  `order` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE `price_categories` ADD PRIMARY KEY (`id`);
ALTER TABLE `price_categories` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

CREATE TABLE `price_list` (
  `id` int(11) NOT NULL,
  `active` tinyint(4) NOT NULL,
  `name` varchar(250) NOT NULL,
  `department` varchar(250) NOT NULL,
  `category` int(11) NOT NULL,
  `price` int(11) NOT NULL,
  `order` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE `price_list` ADD PRIMARY KEY (`id`), ADD KEY `category` (`category`);
ALTER TABLE `price_list` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

Создаем файл шаблона views/view-price.php и вносим маршрут к шаблону в файл config/routes.php

$mvFrontendRoutes = array( ... ,

"price-list/" => "view-price.php"
);

Добавляем методы в файл модели price_list.model.php

public function display()
{
    $params = $this -> filter -> getConditions();
    $params["order->asc"] = "name";
    $params["active"] = 1;

    $rows = $this -> select($params);
    $html = "";
        
    if(!count($rows))
        return "<tr><td colspan=\"4\">Цен по заданным параметрам не найдено.</td></tr>\n";
            
    foreach($rows as $row)
    {
        $row["price"] = $row["price"] ? $row["price"]." руб" : "По запросу";
            
        $html .= "<tr>\n";
        $html .= "<td>".$row["name"]."</td>\n";
        $html .= "<td>".$row["department"]."</td>\n";
        $html .= "<td>".$this -> getEnumTitle("category", $row["category"])."</td>\n";
        $html .= "<td>".$row["price"]."</td>\n";
        $html .= "</tr>\n";
    }
            
    return $html;
}

Содержимое файла шаблона view-price.php

<?
$mv -> seo -> mergeParams("Прайс-лист");

$mv -> price_list -> runFilter(array("name", "department", "category", "price"));
$mv -> price_list -> filter -> setEnumEmptyValueTitle("category", "Все категории");
$mv -> price_list -> filter -> filterValuesList("category", array("active" => 1));

include $mv -> views_path."main-header.php";
?>

<form method="get" action="<? echo $mv -> root_path; ?>price-list/">
    <? echo $mv -> price_list -> filter -> display(); ?>
    <input type="submit" value="Найти" />
</form>
<table class="price">
    <tr>
        <th>Наименование</th>
        <th>Направление</th>
        <th>Категория</th>
        <th>Цена</th>
    </tr>
    <? echo $mv -> price_list -> display(); ?>
</table>

<?
include $mv -> views_path."main-header.php";
?>

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

Слайдер с баннерами

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

Форма с загрузкой файла

© 2012-2023, MV framework team

English MV task tracker system Лицензия

Поделиться