2013-03-26 4 views
1

Я хочу расширить стандартный Zend \ ModuleManager \ ModuleManager, возможно ли это? Например, я хочу загрузить список модулей из базы данных, и я хочу добавить некоторые методы для работы с модулями.Как расширить модульManager в Zend Framework 2?

Если установить фабрику ServiceManager:

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

Существует ошибка «Служба по имени или псевдонима„ModuleManager“уже существует и не может быть переопределен, пожалуйста, используйте альтернативное имя»

ответ

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

Надеется, что это помогает, обратная связь будет оценивается :)

Stoyan