Я пытаюсь обновить шаблон модели представления до шаблона в пользовательской структуре.
Сначала я слил следующее view_manager config
в service manager config
с этим кодом:
$config = ArrayUtils::merge($config,$selConf);
$this->serviceManager->setAllowOverride(true);
$this->serviceManager->setService('Config',$config);
$this->serviceManager->setAllowOverride(false);
Это то, что было объединено, с запросом publicweb
в качестве модуля, index
в качестве контроллера и index
в качестве действия:
array (size=1)
'view_manager' =>
array (size=2)
'template_map' =>
array (size=1)
'publicweb/index/index' => string '/srv/app/client/design/gopher/publicweb/index/index/template.phtml' (length=95)
'template_path_stack' =>
array (size=1)
0 => string '/srv/app/client/design/gopher' (length=58)
Наконец, я выполнил этокод:
$view = $e->getViewModel();
$view->setTemplate('publicweb/index/index');
И результаты не верны.
Я также пытался:
$view = $e->getViewModel();
$view->setTemplate('publicweb/index/index/template');
И результаты не верны, выбрасывая исключение Unable to render template
Я поместил стек шаблонных путей /srv/app/client/design/gopher
в начало template_stack_path array
, чтобы он мог сначала найти его, и он все еще работает неправильно.
Не уверен, чтопродолжается.Также следует отметить, что это выполняется как событие с:
$events->getSharedManager()->attach('Zend\Mvc\Controller\AbstractController',
MvcEvent::EVENT_DISPATCH,[$this,'assignTemplates'],500);
из Application Module
Следует отметить, что я также добавляю файлы JS и CSS из помощника вида вСредство визуализации в viewhelperpluginmanager из этого события:
$events->getSharedManager()->attach('Zend\Mvc\Controller\AbstractController',
MvcEvent::EVENT_DISPATCH,[$this,'hydrateJsAssets'],500);
И также id необходимо убедиться, что я также могу использовать пользовательский макет из этого каталога.
ОБНОВЛЕНИЕ
Мне удалось заставить его работать:
public function onMergeConfig(ModuleEvent $event){
parent::onMergeConfig($event);
$configListener = $event->getConfigListener();
$sm = $event->getParam('ServiceManager');
$config = $configListener->getMergedConfig(false);
$selConf = [
'view_manager' => [
'template_map'=>[
'publicweb/index/index' => '/srv/app/client/design/gopher/publicweb/index/index/template.phtml',
]
]
];
$config = ArrayUtils::merge($config,$selConf);
$configListener->setMergedConfig($config);
$event->setConfigListener($configListener);
$sm->setAllowOverride(true);
$sm->setService('Config',$config);
$sm->setAllowOverride(false);
}
Через
public function init(ModuleManager $moduleManager) {
$events = $moduleManager->getEventManager();
$events->attach(ModuleEvent::EVENT_MERGE_CONFIG,[$this,'onMergeConfig']);
}
Но проблема в том, что это жестко закодировано, и у меня нет доступа к запросу, поэтому я не могуполучить модуль, контроллер, действие