0

我有(简化)两个模块,ApplicationAdmin。我已经在Admin模块上工作了一段时间,并开始使用Application。这两个模块都有一个名为UsersController的控制器。使Zend 2只在同一模块中搜索模板

现在,当我开始制作Application并创建了一些路线和操作时,我的Admin模块破裂了。错误我试图打开任何管理页面时,到处是类似

Unable to render template "application/users/index" 

the docs,模板路径的第一部分是从呼叫控制器的命名空间采取。但自从我创建目录module/Application/view/application/users/以来,它将尝试从那里获取所有Admin\Controller\UsersController模板,而不考虑名称空间。

我该如何让Zend再次使用命名空间,而不必每次都强制执行模板文件?这里

(使用Zend 2.1.3)

回答

1

问题是,我用控制器的名称相同的别名,在多个模块。所以,我改变了自己的名字,像这样:

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

其他模块的配置使用相同的名称,并且刚刚推翻从我的管理模块的人。

0
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); 
    } 
}