Документация

Начало работы

Модели (models)

Шаблоны (views) и маршрутизация (routes)

Формы

SQL запросы

Сессии и безопасность

Плагины

Архитектура

Типы данных

В основе архитектуры 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)
  • удаление в корзину с возможностью восстановления
  • поиск (фильтрация) записей по всем полям
  • массовые операции с записями
  • история изменений всех полей каждой записи
  • администраторы с возможностью разграничения прав
  • история операций администраторов
  • файловый менеджер