MV framework logo
  • Архитектура
    • Философия
    • Технологии
    • CMF
    • История версий
  • Админ панель
  • Поддержка
  • Обратная связь
  • Примеры кода
    • Новостная лента
    • Слайдер с баннерами
    • Список с фильтрацией
    • Форма с загрузкой файла
    • AJAX форма на jQuery
    • Вопросы и ответы
    • Каталог с товарами
    • Авторизация пользователя
    • Регистрация пользователя
    • Личный кабинет пользователя
Скачать Версия 2.7 от 06.06.2023
Документация
  • Архитектура
    • Философия
    • Технологии
    • 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
  • Кэширование
  • Безопасность
  • Отладка
Плагины
  • Общие принципы плагинов
  • Дополнения к административной панели
MV tracker

Архитектура

Типы данных

В основе архитектуры MV лежат типы данных для моделей и форм, среди которых имеются как типичные для программирования (строковый, целочисленный и пр.), так и специальные для более удобной работы (файлы, изображения, массивы изображений, группа). Все типы данных имеют под собой поля в SQL таблице за исключением типа "многие ко многим" (для него создается связующая таблица), а также "многие к одному", который представляет собой обратный подсчет записей по внешнему ключу. Типам присваиваются специальные атрибуты, задающие особые настройки для данного поля.

Для создания поля в модели или форме нужно заполнить массив из 3 обязательных параметров и одного необязательного:

  1. текстовое название поля
  2. тип данных
  3. название поля в SQL таблице
  4. массив дополнительных параметров
array("Активация", "bool", "active", array("on_create" => true)),

array("Название", "char", "name", array("required" => true)),

array("Альбом", "enum", "album", array("foreign_key" => "Albums", "empty_value" => true)),

array("Рейтинг", "float", "rating"),

array("Позиция", "order", "order"),

array("Изображение", "image", "image", array("required" => true))

Модели и представления

Основными компонентами MV являются модели - классы для управления данными в SQL таблицах и представления (шаблоны) - PHP файлы для генерации HTML кода. Модель состоит из нескольких типов данных, которые внутри модели взаимодействуют в виде объектов друг с другом и с другими моделями. На основании полей модели автоматически строится административный интерфейс.

class News extends Model
{
    protected $name = "Новости";

    protected $model_elements = array(
        array("Активация", "bool", "active", array("on_create" => true)),
        array("Дата", "date", "date", array("required" => true)),
        array("Название", "char", "name", array("required" => true)),
        array("Новость", "text", "content", array("rich_text" => true)),
        array("Комментарии", "many_to_one", "comments", array("related_model" => "Comments"))
    );

    public function display()
    {
        $rows = $this -> select(array("active" => 1, "order->desc" => "date"));
        $html = "";
        
        foreach($rows as $row)
        {
            $html .= "<h2>".$row["name"]."</h2>";
            $html .= "<p>Дата: <span>".I18n :: firmatDate($row["date"])."</span></p>";
            $html .= "<p>".$row["content"]."</p>";  
        }

        return $html;
    }
}

В качестве шаблонизатора выступает PHP, файлы шаблонов расположены в специальной папке и подключаются в результате обработки маршрутизатором переданного URL. В шаблоне происходит поиск нужных записей из SQL таблиц, а также вызов методов модели для отображения данных.

<div id="content">
    <h1><? echo $news -> name; ?></h1>
    <p class="date"><? echo I18n :: formatDate($news -> date); ?></p>
    <? echo $news -> content; ?>
</div>

Маршрутизация

Подключение нужного шаблона (представления) осуществляется при помощи маршрутизации на основе переданного URL. Запрошенный URL разделяется на части и анализируется маршрутизатором, после чего происходит подключение шаблона. При анализе URL не применяются регулярные выражения, для увеличения производительности происходит сравнение с типовыми шаблонами, описанными в разделе Общие принципы шаблонов.

Шаблон подключается в любом случае, даже если совпадений не найдено, будет подключен шаблон "по умолчанию", из которого можно вызвать 404 ошибку

"contacts/" => "view-contacts.php",
"user/login/" => "client/view-login.php",
"news/*/" => "view-news.php"

Формы

Формы создаются на основе типов данных. Также, можно создавать формы на основе моделей, используя уже созданную структуру полей. MV располагает инструментами для проверки полей формы, вывода полей и их ошибок, компоновки сообщений, быстрого создания записей в SQL таблицах на основе данных формы.

<?
$form_news = new Form("News");

$fields = array(
    array("Имя", "char", "name", array("required" => true)),
    array("Email", "email", "email", array("required" => true)),
    array("Телефон", "phone", "phone"),
    array("Вопрос", "text", "question", array("required" => true))
);

$form_contact = new Form($fields);
?>

<form method="post" action="">
    <table>
        <? echo $form_contact -> display(); ?>
    </table>
    <p><input type="submit" value="Отправить" /></p>
</form>

Административная панель

В состав MV входит административная панель, которая автоматически создает интерфейс для управления моделями. Все активные модели имеют свой раздел в административной панели, через который можно создавать, редактировать и удалять записи.

Следующие компоненты входят в состав административной панели:

  • списки всех записей модели
  • управление записями (CRUD)
  • удаление в корзину с возможностью восстановления
  • поиск (фильтрация) записей по всем полям
  • массовые операции с записями
  • история изменений всех полей каждой записи
  • администраторы с возможностью разграничения прав
  • история операций администраторов
  • файловый менеджер
MV tracker

© 2012-2023, MV framework team

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

Поделиться