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 шаблонами (видами, views) являются php файлы расположенные в папке views. Данные файлы отвечают за генерацию HTML кода и внешний вид приложения. Шаблоны подключаются по системе маршрутизации. Каждому запрошенному URL будет соответствовать один из шаблонов, даже если страница не будет найдена в базе данных.

Все шаблоны должны располагаться в корневой папке views, также в данной папке можно создавать вложенные папки для группировки шаблонов. 

//Изначальный список маршрутов, файл config/routes.php

$mvFrontendRoutes = [

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

Кроме базовых обязательных маршрутов (index, 404 и fallback), возможно создание следующих типов маршрутов.

  1. Строгое соответствие шаблону.
  2. Маршрут с необязательной частью (только одной и только на конце).
  3. Маршрут с одной или несколькими переменными частями.
  4. Комбинация вариантов 2 и 3.
MV не использует регулярные выражения при определении маршрута, что дает существенный выигрыш в скорости.

Ниже приведен пример файла config/routes.php с различными типами маршрутов.

$mvFrontendRoutes = [

    '/search' => 'view-search.php',
    '/pricelist/new' => 'sections/view-price.php',
    '/request/?' => 'forms/view-request.php',    
    '/webhook/paypal' => 'pages/view-pay-confirm.php',

    '/news' => 'sections/view-news.php',
    '/news/*' => 'sections/view-news-details.php',
    '/order/*/*/?' => 'shop/orders/view-check.php',
    
    '/sitemap.xml' => 'seo/sitemap.php'    
];

За маршрутизацию и подключение шаблонов отвечает класс Router, который содержит в себе запрошенный URL. Данный класс хранит исходный URL, а также массив частей URL. Более подробно объект описан в разделе Объект класса Router.

Примеры работы с объектом Router.

//Получение полного URL
$mv -> router -> getUrl();

//Получение массива частей URL
$mv -> router -> getUrlParts();

//Получение первой части URL
$mv -> router -> getUrlPart(0);

Порядок работы маршрутизатора

  1. Вначале маршрутизатор проверяет URL на предмет запроса главной (индексной) страницы сайта.
  2. Если запрошена не главная страница происходит поиск строгого соответствия URL одному из шаблонов (такими шаблонами являются например /contacts, /form, /register/complete).
  3. Далее если строгого соответствия не найдено ищется шаблон вида /contacts/? с последней необязательной частью.
  4. Далее идет проверка на соответствие URL шаблонам вида module/*, module/action/*/? и т.д.
  5. Если ни одно соответствие шаблону URL не было найдено то происходит переход на шаблон fallback.
  6. Если в шаблоне fallback страница не определилась, то вызывается шаблон e404 (страница не найдена). Также 404 шаблон может быть вызван в любом другом шаблоне, когда не удалось идентифицировать страницу по переданному URL.

Ниже приведен типовой метод определения параметров поиска страницы в базе данных по URL, примеры работы с URL вида /event/32 и /event/birthday.

//Файл config/routes.php
'/event/*' => 'view-event.php'

//Файл models/events.model.php
class Events extends Model
{
    ...
    
    public function defineEventPage(Router $router)
    {
        $url_parts = $router -> getUrlParts();
        
        if(is_numeric($url_parts[1]))
            return $this -> find(['id' => $url_parts[1], 'active' => 1]);
        else
            return $this -> find(['url' => $url_parts[1], 'active' => 1]);
        
        return null;
    }
}

//Пример вызова метода в начале файла views/view-event.php
$event = $mv -> events -> defineEventPage($mv -> router);
$mv -> display404($event);

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

Дополнительные возможности

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

Объект класса Router
MV workshop banner
MV tracker

© 2014-2025, MV framework team

English MV tracker project Github

Поделиться