ZF2从控制器插件工厂获取ServiceManager


ZF2 Get ServiceManager from Controller Plugin Factory

我正在尝试使用工厂创建一个新的控制器插件来注入依赖项。

public function createService(ServiceLocatorInterface $serviceLocator) {
    $services = $serviceLocator->getServiceLocator();
    /** @var 'Zend'Mvc'Controller'PluginManager */
    $plugin = new MyPlugin();
    if ($services->has('my_service')) {
        $plugin->setService($services->get('my_service'));
    }
    return $plugin;
}

问题是$services找不到"my_service"

我已经在我的服务经理中添加了正确的配置

'services' => array(
    'invokables' => array(
        'my_service' => 'Application'Service'MyService'
    )
),
'controller_plugins' => array(
    'factories' => array(
        'my_plugin' => 'Application'Controller'Plugin'Factory'MyPlugin'
    )
)

我认为这是PluginManager中的一个错误,它没有正确地注入服务管理器。

我已经在我的服务经理中添加了正确的配置

服务管理器配置的密钥是service_manager,而不是services,这就是为什么找不到您的可调用项,请更改密钥。。。

'service_manager' => array(
    'invokables' => array(
        'my_service' => 'Application'Service'MyService'
    )
),
// ...