1

標準のZend\ModuleManager \ ModuleManagerを拡張したいのですが、可能ですか?たとえば、データベースからモジュールリストをロードしたいのですが、モジュールを操作するためのメソッドをいくつか追加したいと思います。

ファクトリをserviceManagerに設定した場合:

'service_manager' => array(
    'factories' => array(
        'moduleManager' => 'Path/To/My/ModuleManager',
    ),
),

「名前またはエイリアス「modulemanager」のサービスがすでに存在し、オーバーライドできません。別の名前を使用してください」というエラーがあります。

4

1 に答える 1

2

Zend Framework 2のモジュールマネージャーは、サービスファクトリクラスを介して作成されます。ModuleManagerにマッピングしていZend\Mvc\Service\ModuleManagerFactoryます。ModuleManagerFactoryこれを見て、のモジュールマネージャにどのオブジェクトが挿入されているかを確認することをお勧めしますcreateService()

独自のモジュールマネージャーを拡張して使用する場合は、ModuleManagerを拡張するクラスを作成するだけでなく、Zend \ Mvc \ Service\ModuleManagerFactoryを上書きするサービスマネージャーファクトリも作成する必要があります。/config/application.config.php次のコードは正しい方向に進んでいますが、これはZend \ Mvcがメインサービスの作成に使用する構成ファイルであるため、このコードをファイルに含めることが重要です。

// config/application.config.php
'service_manager' => array(
    'factories' => array(
        'ModuleManager' => 'Path/To/My/ModuleManagerFactory', // <-- Path to MM factory
    ),
),

以下のリンクは、\ Zend \ Mvcで実行されているデフォルトのサービスと、これが発生している方法と場所に関する適切な情報を提供します。

https://zf2.readthedocs.org/en/latest/modules/zend.mvc.services.html

これがお役に立てば幸いです。フィードバックをいただければ幸いです:)

ストヤン

于 2013-03-26T08:28:00.310 に答える