Когда у Zend Framework есть имя шаблона, ему остается только определить абсолютный путь к соответствующему файлу .phtml. Это также называется разрешением представлений (view resolving). Шаблоны разрешаются специальным классом Zend Framework, который называется view resolver (разрешатель представлений)
В ZF3 существуют два разрешателя представлений: TemplatePathStack
и TemplateMapResolver
.
Оба принимают в качестве входящих данных имя шаблона представления и возвращают путь к файлу шаблона.
Имя шаблона обычно состоит из имени модуля, затем имени контроллера и затем имени шаблона, например,
"application/index/about", "application/index/index". Исключением является "layout/layout" - здесь нет имени модуля.
TemplateMapResolver
использует PHP-массив, чтобы определить путь к файлу шаблона
представления по его имени. Этот способ быстр, но вам придется хранить в каком-либо
массиве все пути к шаблонам и обновлять его каждый раз, когда вы добавляете новый шаблон.
TemplatePathStack
предполагает, что имя шаблона представления однозначно соответствует
структуре каталогов. Например, "application/index/about" соответствует
APP_DIR/module/Application/view/application/index/about.phtml.
Настройки разрешателя хранятся внутри файла module.config.php под ключом view_manager:
<?php
return [
//...
'view_manager' => [
//...
'template_map' => [
'layout/layout' => __DIR__ . '/../view/layout/layout.phtml',
'application/index/index' => __DIR__ . '/../view/application/index/index.phtml',
'error/404' => __DIR__ . '/../view/error/404.phtml',
'error/index' => __DIR__ . '/../view/error/index.phtml',
],
'template_path_stack' => [
__DIR__ . '/../view',
],
],
];
Как вы видите, настройки разрешателя TemplateMapResolver
хранятся под ключом template_map. По умолчанию,
существует несколько "стандартных" шаблонов представления, которое разрешаются таким
образом: шаблон главной страницы, шаблон лэйаута (мы поговорим о нем в главе Внешний вид страницы и лэйаут)
и шаблоны ошибок (о них поговорим чуть позже). Эти стандартные страницы используют этот тип
разрешателя из-за его быстроты.
Настройки TemplatePathStack
хранятся под ключом template_path_stack.
Как вы можете заметить, этот разрешатель ищет ваши скрипты представления в директории "view" вашего модуля.
Поэтому мы можем просто положить файл about.phtml в эту директорию, и ZF3 автоматически
найдет шаблон.
TemplateMapResolver
и TemplatePathStack
работают в паре. Сначала первый пытается найти
шаблон представления в его массиве, и если страница не может быть найдена, начинает
работу второй.