A free and open-source book on ZF3 for beginners


4.15. View Resolver

Когда у Zend Framework есть имя шаблона, ему остается только определить абсолютный путь к соответствующему файлу .phtml. Это также называется разрешением представлений (view resolving). Шаблоны разрешаются специальным классом Zend Framework, который называется view resolver (разрешатель представлений)

В ZF3 существуют два разрешателя представлений: TemplatePathStack и TemplateMapResolver. Оба принимают в качестве входящих данных имя шаблона представления и возвращают путь к файлу шаблона. Имя шаблона обычно состоит из имени модуля, затем имени контроллера и затем имени шаблона, например, "application/index/about", "application/index/index". Исключением является "layout/layout" - здесь нет имени модуля.

Настройки разрешателя хранятся внутри файла 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 работают в паре. Сначала первый пытается найти шаблон представления в его массиве, и если страница не может быть найдена, начинает работу второй.


Top