使Zend 2只搜索相同模块中的模板


Make Zend 2 to only search for templates in same Module

我有(简化)两个模块,ApplicationAdmin。我已经在Admin模块上工作了一段时间,现在开始使用Application。这两个模块都有一个名为UsersController的控制器。

现在,当我开始制作Application并创建一些路由和动作时,我的Admin模块坏了。当尝试打开任何管理页面时,我得到的错误类似于

Unable to render template "application/users/index"

根据文档,模板路径的第一部分取自调用控制器的命名空间。但是自从我创建目录module/Application/view/application/users/以来,它就尝试从那里获取所有Admin'Controller'UsersController模板,而不考虑名称空间。

如何使Zend再次使用命名空间,而不必每次都强制使用模板文件?

(使用Zend 2.1.3)

这里的问题是我在多个模块中为控制器名称使用了相同的别名。所以我把它们的名字改成这样:

'controllers' => array(
    'invokables' => array(
        'AdminIndex' => 'Admin'Controller'IndexController',
    ),
),

其他模块配置使用了相同的名称,因此只是覆盖了我的Admin模块中的名称。

namespace Admin;
class Module
{
    public function init($moduleManager)
    {
        $sharedEvents = $moduleManager->getEventManager()->getSharedManager();
        $sharedEvents->attach(__NAMESPACE__, 'dispatch', function($e) {
            $actionName = $e->getRouteMatch()->getParam('action');
                $controller = $e->getTarget();
                $controller->layout(__DIR__ . "/Application/view/application/user/$actionName");
        }, 100);
    }
}