Я потратил немного времени, пытаясь проследить свой путь через код ZF2 и документацию, но я не могу найти объяснение способа расширения конфигурации с использованием глобальной конфигурации для экземпляра Zend\Service\AbstractPluginManager
когда он был зарегистрирован в качестве менеджера службы с помощью прослушивателя службы.
Обзор классов, которые я создал:
AssetManager\AssetFilterPluginManager
: расширяет AbstractPluginManager
AssetManager\Service\AssetFilterManagerFactory
: Расширение фабрики Zend\Mvc\Service\AbstractPluginManagerFactory
с const PLUGIN_MANAGER_CLASS
установлен в "AssetManager\AssetFilterManagerFactory"
AssetManager\AssetFilterProviderInterface
: Функциональный интерфейс модуля
в config/module.config.php
Я настроил прослушиватель службы следующим образом:
'service_listener_options' => array(
array(
'service_manager' => 'AssetFilterManager',
'config_key' => 'asset_filters',
'interface' => 'AssetManager\AssetFilterProviderInterface',
'method' => 'getAssetFilterConfig',
),
),
Конфигурация диспетчера служб содержит определение AssetFilterManager
:
'service_manager' => array(
'factories' => array(
'AssetFilterManager' => 'AssetManager\Service\AssetFilterManagerFactory',
),
),
Прочитав использование этих опций в коде помощников вида, я понял, как должна быть разработана конфигурация. Глядя на config_key
Опция в параметрах прослушивателя службы, может показаться, что конфигурация должна быть передана диспетчеру плагинов для настройки служб, но я не могу определить, где или произойдет ли это. Возможно, я неправильно понимаю реализацию.
Моя цель — это подключаемое расширение менеджера сервисов, которое работает во многом как встроенные плагины контроллера Zend и просмотр помощников. Если есть кто-то с большим опытом использования этих функций, чем я, я был бы признателен за любое понимание.
Вы не можете настроить прослушиватель службы в config / module.config.php, service_listener_options является частью config / application.config.php. Эта конфигурация считывается перед инициализацией модулей.
Смотрите пример работы Вот.
Вы должны настроить прослушиватель службы в вашем Module.php
Других решений пока нет …