Zend Framework 2 - TemplatePathStack для нескольких объектов в модуле
Некоторое время назад я следил за tutorial
и включал TemplatePathStack
как описано здесь.
В учебнике предлагается для каталога вида структура, такая как view/album/album
в котором лежат все файлы phtml.
Интересно, в чем причина альбома/альбома... И что, если мой модуль называется MasterData
и он включает в себя добавление/редактирование/удаление... для Entity1
и Entity2
.
Как система знает, какой add.phtml использовать?
Мне интересно, не путаете ли вы сущности с контроллерами. Убедитесь, что вы следуете правилам структуры каталогов модулей, которые суммируются (включая только то, что имеет отношение к вашему вопросу) следующим образом:
/module
|--/MasterData
|----/src
|--------/Controller
|-----------/Entity1Controller
|-----------/Entity2Controller
|--------/Model
|-----------/Entity1
|-----------/Entity2
|----/view
|------/master-data
|--------/entity1
|-----------/action1.phtml
|-----------/action2.phtml
|--------/entity2
|-----------/action1.phtml
|-----------/action2.phtml
...
Для стека пути шаблона и в соответствии с предыдущей структурой конфигурация просто:
'view_manager' => array(
'template_path_stack' => array(
__DIR__ . '/../view',
),
),
Помните, что в папке просмотра стандартное соглашение:
- entity1 сопоставляется с вашим Entity1Controller (если ваш контроллер camelCased, например:
MyFooController
, соответствующее имя папки будет my-foo
) action1.phtml сопоставляется с методом action1Action
вашего класса Entity1Controller
(то же замечание, что и выше, если ваше имя действия вертелось на камне).