我从骨架应用程序开始,我正在尝试根据自己的喜好对其进行自定义。我不喜欢文件夹结构,因为它似乎有很多冗余/不一致。
至于我目前的问题,我想将所有观点保留在这样的结构中:
├── 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 模块存在于该视图文件夹下。这就是我想避免的。
还有一个模板地图,但据我所知,它允许您操作特定路径。我不想在每次添加新操作时编辑此字段并在地图中添加新视图
您可以编写自己的 Zend\Mvc\View\Http\InjectTemplateListener 实现
只需使用原始代码作为基础,并删除与第 80 行周围的$module相关的行(在 InjectTemplateListener::injectTemplate 中)。删除:
$template = $this->inflectName($module);
应该做你需要的,但你可能想要整理一下。然后附加优先级高于
在模块中.php在其中一个应用程序模块中
public function onBootstrap(EventInterface $e)
{
$eventManager = $e->getApplication()->getEventManager();
$injectTemplateListener = new InjectTemplateListener();
$eventManager->getSharedManager()->attach('ZendStdlibDispatchableInterface',
MvcEvent::EVENT_DISPATCH,
array($injectTemplateListener,
'injectTemplate'
),
-85
);
}
或者,您可以完全停止原始事件的发生,而不是如上所述覆盖模板