我尝试使用以下语句获取databaseadapter:
$dbAdapter = $this->getServiceLocator()->get('db');
我收到错误 "一个名为" getServiceLocator"的插件在插件管理器Zend \ Mvc \ Controller \ PluginManager"
中找不到在我的module.php中搜索时(这是一个正确的文件吗?)我认为这可能是一个理解问题。我阅读了Ralph Eggert的文章和zend文档。我明白我可以通过servicemanager获取任何配置信息。但我发现的所有文件都是Zend2。
所以在我的module.php中,我看到类似这样的内容(片段):
public function getServiceConfig()
{
return [
'factories' => [
Model\ImportTable::class => function($container) {
$tableGateway = $container->get(Model\ImportTableGateway::class);
return new Model\ImportTable($tableGateway);
},
Model\ImportTableGateway::class => function ($container) {
$dbAdapter = $container->get(AdapterInterface::class);
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new Model\Import());
return new TableGateway('t_dcl', $dbAdapter, null, $resultSetPrototype);
},
Model\DclimportTable::class => function($container) {
$tableGateway = $container->get(Model\DclimportTableGateway::class);
return new Model\DclimportTable($tableGateway);
},
Model\DclimportTableGateway::class => function ($container) {
$dbAdapter = $container->get(AdapterInterface::class);
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new Model\Dclimport());
return new TableGateway('t_dcl_import', $dbAdapter, null, $resultSetPrototype);
},
在那里我看到一个变量$ dbAdapter,但我怎样才能得到这个变量?上面的错误可能是因为我现在使用ZEND3?这种方法是否已被弃用?我无法找到任何迁移信息。
无论如何,有人可以向我解释一下,如何从module.php中获取这些密钥,并在这种情况下在那里创建自己的工厂?我知道这是一个非常基本的问题,但我认为如果我没有做到这一点,它将永远超过我。
答案 0 :(得分:1)
控制器内的服务定位器在2.7版中已弃用,在3.0版中已删除。
修复您的代码:
更详细的信息可以在migration docs。
中找到