在 ZF2 中配置视图路径


Configure View Path in ZF2

我从骨架应用程序开始,我正在尝试根据自己的喜好对其进行自定义。我不喜欢文件夹结构,因为它似乎有很多冗余/不一致。

至于我目前的问题,我想将所有观点保留在这样的结构中:

├── 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('Zend'Stdlib'DispatchableInterface', 
                                              MvcEvent::EVENT_DISPATCH,
                                              array($injectTemplateListener, 
                                                    'injectTemplate'
                                              ),
                                              -85
    );
}

或者,您可以完全停止原始事件的发生,而不是如上所述覆盖模板