我正在尝试使用工厂创建一个新的控制器插件来注入依赖项。
public function createService(ServiceLocatorInterface $serviceLocator) {
$services = $serviceLocator->getServiceLocator();
/** @var ZendMvcControllerPluginManager */
$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' => 'ApplicationServiceMyService'
)
),
'controller_plugins' => array(
'factories' => array(
'my_plugin' => 'ApplicationControllerPluginFactoryMyPlugin'
)
)
我认为这是PluginManager中的一个错误,它没有正确地注入服务管理器。
我已经在我的服务经理中添加了正确的配置
服务管理器配置的密钥是service_manager
,而不是services
,这就是为什么找不到您的可调用项,请更改密钥。。。
'service_manager' => array(
'invokables' => array(
'my_service' => 'ApplicationServiceMyService'
)
),
// ...