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 представляет собой PHP класс и SQL таблицу, управляемую данным классом.
Основные правила создания модели:

  1. Название php класса должно начинаться с названия модели, например: pages.model.php, gallery_main.model.php.
  2. Файлы классов моделей должны находиться в папке models в корне проекта.
  3. Класс модели должен быть унаследован от класса Model.
  4. Класс модели должен иметь свойство $name, которое является названием модели.
  5. Класс модели должен иметь свойство $model_elements, которое является массивом полей данной модели, аналогично полям в таблице базы данных.
  6. В основе задания полей в свойстве $model_elements модели стоят типы данных.
  7. SQL таблица модели должна иметь тоже название что и класс модели в нижнем регистре pages, gallery_main. Таблицы создаются при помощи миграций.
  8. Названия полей в таблице должны совпадать с полями модели в массиве $model_elements, название поля в SQL таблице является третьим по счету элементом массива параметров.
  9. Для активации модель должна быть прописана в файле config/models.php, в данном файле название класса модели должно быть добавлено в массив активных моделей, после чего модель станет доступна в административном интерфейсе и на публичной части сайта.
$mvActiveModels = [
    'Pages', 'Blocks', 'Seo', 'GalleryMain'
];

Пример самой простой модели

PHP класс Hello должен находиться в файле models/hello.model.php.

class Hello extends Model
{
    protected $name = 'Привет мир';
    
    protected $model_elements = [
        ['Название', 'char', 'name']
    ];
}

При установке MV в нем находятся 3 предустановленные модели:

  1. Pages - страницы меню
  2. Blocks - текстовые блоки
  3. SEO - данные для seo оптимизации

База данных уже содержит необходимые таблицы для данных моделей. Таблица pages имеет несколько записей для приветственных страниц.

Модель Seo в отличии от Pages и Blocks представляет собой простую модель, данные которой представляют собой пару ключ - значение. Подробнее о данном типе моделей читайте в разделе Простые модели.

Ниже приведены 3 модели, связанные между собой внешними ключами.

Новости

class News extends Model 
{
    protected $name = 'Новости';
    
    protected $model_elements = [
        ['Название', 'char', 'name', ['required' => true]],
        ['Раздел', 'enum', 'type', ['values_list' => ['economy' => 'Экономика',
                                                      'sport' => 'Спорт',
                                                      'culture' => 'Культура']]],
        ['Дата', 'date', 'date'],
        ['Активен', 'bool', 'active'],
        ['Текст', 'text', 'content', ['rich_text' => true]],
        ['Комментарии', 'many_to_one', 'comments', [
                                           'related_model' => 'NewsComments',
                                           'name_field' => 'author']]
    ];
}

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

class NewsComments extends Model
{
    protected $name = 'Комментарии к новостям';
    
    protected $name_field = 'author';
    
    protected $model_elements = [
        ['Автор', 'enum', 'author', ['foreign_key' => 'Authors', 'name_field' => 'email']],
        ['Дата', 'date_time', 'date'],
        ['Новость', 'enum', 'news_id', ['foreign_key' => 'News']],        
        ['Текст', 'text', 'content']
    ];
}

Авторы комментариев

class Authors extends Model
{
    protected $name = 'Авторы комментариев';
    
    protected $model_elements = [
        ['Email', 'email', 'email', ['required' => true, 'unique' => true]],
        ['Пароль', 'password', 'password'],
        ['Комментарии', 'many_to_one', 'comments', [
                                          'related_model' => 'NewsComments', 
                                          'name_field' => 'date']],
        ['Фотографии', 'multi_images', 'pictures'],
        ['О себе', 'text', 'about']
    ];                   
}

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

Отладка

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

Типы данных
MV workshop banner
MV tracker

© 2014-2025, MV framework team

English MV tracker project Github

Поделиться