我已经从骨架应用程序开始,我正在尝试根据自己的喜好自定义它。我不喜欢文件夹结构,因为它似乎有很多冗余/不一致。
至于我目前的问题,我想把我的所有观点保存在这样的结构中:
├── module
├── view
├── controller
├── action.phtml
当前强制使用的骨架应用程序是这样的:
├── module
├── view
├── module [This is what I want to get rid of , it is redundant]
├── controller
├── action.phtml
我确实看到你有配置选项:
'template_path_stack' => [ $dir . '/../view', ],
但正如您所见,它仍然假设该视图文件夹下存在dir模块。这就是我想要避免的。
还有一个模板地图,但据我所知,它允许你操纵特定的路径。我不想编辑此字段,并在每次添加新操作时在地图中添加新视图
答案 0 :(得分:1)
您可以编写自己的Zend \ Mvc \ View \ Http \ InjectTemplateListener实现
只需使用原始代码作为基础,并删除与第80行周围的$ module相关的行(在InjectTemplateListener :: injectTemplate中)。删除:
$template = $this->inflectName($module);
应该做你需要的但你可能想要整理一下。然后以优先于
的优先级附加您的实现在您的某个应用程序模块中的module.php中
public function onBootstrap(EventInterface $e)
{
$eventManager = $e->getApplication()->getEventManager();
$injectTemplateListener = new InjectTemplateListener();
$eventManager->getSharedManager()->attach('Zend\Stdlib\DispatchableInterface',
MvcEvent::EVENT_DISPATCH,
array($injectTemplateListener,
'injectTemplate'
),
-85
);
}
或者你也许可以完全停止原始事件,而不是像上面那样覆盖模板