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

Архитектура

Типы данных

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

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

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

  1. Текстовое название поля.
  2. Тип данных.
  3. Название поля в SQL таблице.
  4. Массив дополнительных параметров, опционально.
['Активация', 'bool', 'active'],
['Название', 'char', 'name', ['required' => true]],
['Альбом', 'enum', 'album', ['foreign_key' => 'Albums', 'empty_value' => true]],
['Рейтинг', 'float', 'rating'],
['Позиция', 'order', 'order'],
['Изображение', 'image', 'image', ['required' => true]]

Модели и шаблоны

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

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

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

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

        return $html;
    }
}

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

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

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

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

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

// Файл config/routes.php

'/' => 'view-index.php',
'e404' => 'view-404.php',
'fallback' => 'view-default.php',

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

'/payment/success/?' => 'view-pay-success.php'

Формы

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

//Форма из модели
$form = new Form('News');

//Форма из массива полей
$fields = [
    ['Имя', 'char', 'name', ['required' => true]],
    ['Email', 'email', 'email', ['required' => true]],
    ['Телефон', 'phone', 'phone'],
    ['Вопрос', 'text', 'question', ['required' => true]]
];

$form = new Form($fields);

<form method='post' action='<? echo $mv -> root_path; ?>form'>
    <? echo $form -> display(); ?>
    <button>Отправить</button>
</form>

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

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

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

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

© 2014-2025, MV framework team

English MV tracker project Github

Поделиться