Задумка такая: свой sidebar у каждого модуля. PHP: // layout.phtml <?php ... <body> <?= $this->partial('sidebar') ?> <?= $this->content ?> </body> ?> Проблема: partial() не работает. Как сделать include статичного .phtml файла из папки текущего модуля? Zend Framework 3.
в конфигурационное файле модуля прописан путь к вьюхам? PHP: 'view_manager' => [ 'template_path_stack' => [ __DIR__ . '/../view' ] ]
Эти настройки переписываются следующим модулем при загрузке. Будет использоваться настройка из последнего модуля. Надеюсь объяснил)
если модули грузятся один за другим, то нужно знать какой модуль обрабатывал путь. первый вариант: в конструкторе каждого контроллера модуля пишем: define('CURRENT_MODULE', 'module'); в конфигурационном файле модуля: 'template_path_stack' => array( 'module' => __DIR__ . '/../view' ) в layout: PHP: partial(CURRENT_MODULE .'/sidebar') не тестировал, но мысль должна быть понятна. либо другой вариант. В роутере пишем значение модуля, переписываем partial viewHelper, который проверяет в Request значение модуля и подставляет нужный .phtml файл. путь PHP: 'admin' => array( 'type' => 'segment', 'options' => array( 'route' => '/admin', 'defaults' => array( 'module' => 'admin' '__NAMESPACE__' => 'App\Controller\Admin', 'controller' => 'Index', 'action' => 'index', ), ), ), в переписанном View helper: PHP: $module = $this->getEvent()->getRouteMatch()->getParam('module', 'application'); как уже писал выше, не тестировал, но идея должна быть понятна.