Общие принципы шаблонов
В 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), возможно создание следующих типов маршрутов.
- Строгое соответствие шаблону.
- Маршрут с необязательной частью (только одной и только на конце).
- Маршрут с одной или несколькими переменными частями.
- Комбинация вариантов 2 и 3.
Ниже приведен пример файла 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);
Порядок работы маршрутизатора
- Вначале маршрутизатор проверяет URL на предмет запроса главной (индексной) страницы сайта.
- Если запрошена не главная страница происходит поиск строгого соответствия URL одному из шаблонов (такими шаблонами являются например /contacts, /form, /register/complete).
- Далее если строгого соответствия не найдено ищется шаблон вида /contacts/? с последней необязательной частью.
- Далее идет проверка на соответствие URL шаблонам вида module/*, module/action/*/? и т.д.
- Если ни одно соответствие шаблону URL не было найдено то происходит переход на шаблон fallback.
- Если в шаблоне 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);
Предыдущий раздел
Дополнительные возможности