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

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

Модели (models)

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

Формы

SQL запросы

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

Плагины

Общие принципы шаблонов

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

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

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

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

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

public function defineEventPage(Router $router)
{
    $url_parts = $router -> getUrlParts();

    if(count($url_parts) >= 2 && $url_parts[0] == "event" && is_numeric($url_parts[1]))
        return $this -> findRecord(array("id" => $url_parts[1], "active" => 1));
    else if(count($url_parts) >= 2 && $url_parts[0] == "event" && $url_parts[1] && !is_numeric($url_parts[1]))
        return $this -> findRecord(array("url" => $url_parts[1], "active" => 1));
    else
        return false;
}

//Пример вызова метода
$event_content = $mv -> events -> defineEventPage($mv -> router);
$mv -> display404($event_content);

Примеры настроек маршрутизации

Содержимое файла "config/routes.php".

$mvFrontendRoutes = array(

"index" => "view-index.php",

"404" => "view-404.php",

"default" => "view-default.php",

"contacts/" => "view-contacts.php",

"contacts/map/" => "view-location.php",

"client/" => "client/view-home.php",

"client/messages/" => "client/view-messages.php",

"article/special/*/" => "view-special.php",

"article/*/" => "view-article.php",

"products->" => "view-products.php",

"events->" => "company/live/view-events.php"
);

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

  1. Вначале маршрутизатор проверяет URL на предмет запроса главной (индексной) страницы сайта.
  2. Если запрошена не главная страница происходит поиск строгого соответствия URL одному из шаблонов (такими шаблонами являются например "contacts/", "about/", "register/complete/").
  3. Далее если строгого соответствия не найдено ищется шаблон вида "module/extra/*/" и "module/extra->", первый из которых представляет собой 3 части, 2 из которых определены, а третья может быть переменной, либо все шаблоны, которые начинаются на "module/extra".
  4. Далее идет проверка на соответствие URL шаблонам вида "module/*/" (2 части URL, первая из которых обозначена как "module", например "products/14/", "articles/982/", "users/ivanov/").
  5. Далее идет поиск шаблона вида "module->" (все URL, первая часть которых равна "module", например "products/23/", "catalog/cars/page/2/").
  6. Если не одно соответствие шаблону URL не было найдено то происходит переход на шаблон "default".
  7. Если в шаблоне "default" страница не определилась, то вызывается шаблон "404" (страница не найдена). Также "404" шаблон может быть вызван в любом другом шаблоне, когда не удалось идентифицировать страницу по переданному URL.

Примеры работы маршрутизатора 

Ситуации на основе ранее приведенного файла "config/routes.php".

  1. URL: "about/"
    Совпадение с шаблоном: "default", Подключаемый файл: "view-default.php", (совпадений не найдено)
  2. URL: "contacts/map/"
    Совпадение с шаблоном: "contacts/map/", Подключаемый файл: "view-location.php"
  3. URL: "contacts/google-map/"
    Совпадение с шаблоном: "default", Подключаемый файл: "view-default.php" (совпадений не найдено)
  4. URL: "client/messages/"
    Совпадение с шаблоном: "client/messages/", Подключаемый файл: "client/view-messages.php"
  5. URL: "article/543/"
    Совпадение с шаблоном: "article/*/", Подключаемый файл: "view-article.php"
  6. URL: "article/nature/47/"
    Совпадение с шаблоном: "default", Подключаемый файл: "view-default.php" (совпадений не найдено, для перехода на "view-article.php" необходимо расширить шаблон до вида "article->")
  7. URL: "events/company/new-year/page/4/"
    Совпадение с шаблоном: "events->", Подключаемый файл: "company/live/view-events.php"
  8. URL: "article/special/92/"
    Совпадение с шаблоном: "article/special/*/", Подключаемый файл: "view-special.php"
  9. Примеры вызова 404 ошибки

    if(...)
        $mv -> display404(); //Переход на страницу 404
    
    $content = $mv -> pages -> findRecord(array("url" => "index"));
    $mv -> display404($content); //Если в переменной $content пусто, то переход на 404 страницу
    
    $content = $mv -> pages -> findRecord($mv -> pages -> defineUrlType($mv -> router));
    $mv -> display404($content);
    
    $content = $mv -> pages -> findRecord(array("url" => "events","active" => 1));
    $mv -> display404($content);
    
    $event_content = $mv -> events -> findRecord($mv -> events -> defineUrlType($mv -> router));
    $mv -> display404($event_content);
    
    $content = $mv -> products -> defineProductPage($mv -> router);
    $mv -> display404($content);
    

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

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

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

Объект класса Router