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

  1. Название php класса должно начинаться с названия модели, например: "pages.model.php", "gallery.model.php".
  2. Файлы классов моделей должны находиться в папке "models" в корне проекта.
  3. Класс модели должен быть унаследован от класса "Model".
  4. Класс модели должен иметь свойство "$name", которое является названием модели.
  5. Класс модели должен иметь свойство "$model_elements", которое является массивом полей данной модели, аналогично полям в таблице базы данных.
  6. В основе задания полей в свойстве "$model_elements" модели стоят Типы данных.
  7. SQL таблица модели должна иметь тоже название что и класс модели в нижнем регистре "pages", "gallery".
  8. Названия полей в таблице должны совпадать с полями модели в массиве "$model_elements" (название поля в SQL таблице является третьим по счету элементом массива).
  9. Таблица должна иметь целочисленное поле "id", которое должно быть ее первичным ключом и иметь атрибут "auto increment".
  10. Для активации модель должна быть прописана в файле "config/models.php", в данном файле название модели должно быть добавлено в массив "$mvActiveModels", после чего модель станет доступна в административном интерфейсе и на frontend части сайта.

Пример 1 Текстовые блоки

PHP класс "Blocks" находящийся в файле models/blocks.model.php

<?
class Blocks extends Model
{
    protected $name = "Текстовые блоки";

    protected $model_elements = array(
        array("Активация", "bool", "active"),
        array("Название", "char", "name"),
        array("Содержание", "text", "content")
    );
}
?>

Таблица SQL в базе данных с аналогичным именем "blocks" (СУБД MySQL)

CREATE TABLE `blocks` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `active` tinyint(4),
  `name` varchar(200),
  `content` text,
   PRIMARY KEY (`id`),
)  ENGINE=MyISAM DEFAULT CHARSET=utf8;

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

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

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

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

Пример 2 Новости

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

    protected $model_elements = array(
        array("Название", "char", "name", array("required" => true)),
        array("Раздел", "enum", "type", array("values_list" => array("politic" => "Политика",
                                                                     "economy" => "Экономика",
                                                                     "sport" => "Спорт",
                                                                     "culture" => "Культура"))),
        array("Дата", "date", "date"),
        array("Активен", "bool", "active"),
        array("Текст", "text", "content", array("rich_text" => true)),
        array("Комментарии", "many_to_one", "comments",
        array("related_model" => "News_Comments", "name_field" => "author"))
    );                    
}
?>
CREATE TABLE "news" (
  "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
  "name" VARCHAR, 
  "type" VARCHAR, 
  "date" VARCHAR, 
  "active" INTEGER, 
  "content" TEXT)

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

<?
class News_Comments extends Model
{
    protected $name = "Комментарии к новостям";

    protected $model_elements = array(
        array("Автор", "enum", "author", array("foreign_key" => "Authors", 
                                               "name_field" => "email")),
        array("Дата", "date_time", "date"),
        array("Новость", "enum", "news_id", array("foreign_key" => "News")),        
        array("Текст", "text", "content"),
    );

    protected $name_field = "author";
}
?>
CREATE TABLE "news_comments" (
  "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
  "author" INTEGER,
  "date" VARCHAR,
  "news_id" INTEGER,  
  "content" TEXT)

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

<?
class Authors extends Model
{
    protected $name = "Авторы комментариев";

    protected $model_elements = array(
        array("Email", "email", "email", array("required" => true, "unique" => true)),
        array("Пароль", "password", "password"),
        array("Комментарии", "many_to_one", "comments", array("related_model" => "News_Comments", 
                                                              "name_field" => "date")),
        array("Фотографии", "multi_images", "pictures"),
        array("О себе", "text", "about")
    );                    
}
?>
CREATE TABLE "authors" (
  "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
  "email" VARCHAR, 
  "password" VARCHAR,
  "pictures" TEXT,
  "about" TEXT)

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

Миграции

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

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

© 2012-2023, MV framework team

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

Поделиться