我在config中设置了数据库适配器,我可以使用密钥名称在工厂中获取数据库服务,如:
int disp_file_info(char **argv)
{
struct stat sb;
stat(argv[1], &sb);
printf("Inode: %d\n", sb.st_ino);
printf("Hard Links: %d\n", sb.st_nlink);
printf("Size: %d\n", sb.st_size);
printf("Allocated space: %d\n", sb.st_blocks);
printf("Minor: %d\n", minor(sb.st_dev));
printf("Major: %d\n", major(sb.st_dev));
printf("UID: %d\n", sb.st_uid);
printf("GID: %d\n", sb.st_gid);
}
然后我设置了具有密钥名称的身份验证适配器:' connectoauth2' 它工作正常,并验证我的休息api。
问题是我想注入这个' connectoauth2'到我的UserEducation服务到getIdentity所以我在工厂做了
$connectDb = $services->get('connectDb');
错误:无法解析服务" connectoauth2"到工厂;你确定你在配置期间提供了吗?
即使身份验证工作正常但仍然无法像数据库那样获得服务。
请帮忙!
谢谢!
答案 0 :(得分:0)
您确定$services
是服务经理吗?如果它是另一个服务定位器实例(例如ControllerManager
或ViewHelperManager
而不是服务管理器),您首先必须从该服务定位器获取服务管理器:
$serviceManager = $services->getServiceLocator();
然后来自服务经理的服务:
$service = $serviceManager->get('connectoauth2');
检查所有其他服务定位器的概述here
答案 1 :(得分:0)
这只是Authentication Adapter
而非Authentication Service
。因此,如果您需要从identity
检索Authentication
,则应使用Authentication Service
。在Zend Framework中,您可以像这样调用Authentication Service
$authentication = $serviceManager->get('authentication');
并像这样检索identity
。
$authentication->getIdentity()