0

私は(単純化された)2つのモジュールを持っていApplicationますAdmin. Admin私はしばらくの間このモジュールに取り組んでおり、Application. 両方のモジュールには、 という名前のコントローラーがありUsersControllerます。

の作成を開始し、Applicationいくつかのルートとアクションを作成したときに、Adminモジュールが壊れました。どこでも管理ページを開こうとしたときに発生したエラーは、次のようなものでした

Unable to render template "application/users/index"

docsによると、テンプレート パスの最初の部分は、呼び出し元のコントローラーの名前空間から取得されます。しかし、ディレクトリを作成して以来、名前空間に関係なく、そこからmodule/Application/view/application/users/すべてのテンプレートを取得しようとします。Admin\Controller\UsersController

毎回アクションでテンプレート ファイルを強制することなく、Zend に名前空間を再度使用させるにはどうすればよいですか?

(Zend 2.1.3 を使用)

4

2 に答える 2

1

ここでの問題は、複数のモジュールで Controller 名に同じエイリアスを使用していたことです。そこで、次のように名前を変更しました。

'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 に答える