0

我有(简化)两个模块,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)

4

2 回答 2

1

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

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

另一个模块配置使用相同的名称,因此只是覆盖了我的管理模块中的名称。

于 2013-03-05T11:31:45.550 回答
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);
    }
}
于 2013-03-02T17:18:57.070 回答