首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zend\ServiceManager\ServiceManager::get无法获取或创建数据库的实例

Zend\ServiceManager\ServiceManager::get无法获取或创建数据库的实例
EN

Stack Overflow用户
提问于 2014-07-08 15:19:37
回答 1查看 5.6K关注 0票数 1

我做了一个登录表。我总是在我的控制器中得到这个错误,它不能获取或创建这个数据库的实例。我已经阅读了关于它的所有文档以及为什么会发生这个错误。我尝试了所有方法来解决这个问题,但它仍然不起作用。谁能帮帮我。我正在使用我的数据库做其他事情,它可以建立连接,但是当我想要加载登录页面时,我得到了这个错误。

这是我的global.php中的代码

代码语言:javascript
复制
return array(
    'db' => array(
        'driver'         => 'Pdo',
        'dsn'            => 'mysql:dbname=music;host=localhost',
        'driver_options' => array(
            PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
        ),
        'username'       => 'root',
        'password'       => ''
    ),
    'service_manager' => array(
        'factories' => array(
            'Zend\Db\Adapter\Adapter'
            => 'Zend\Db\Adapter\AdapterServiceFactory',
        ),
    ),
);

这是我的控制器

代码语言:javascript
复制
public function indexAction()
    {
        /** @var Mysqli $dbAdapter */
        $dbAdapter = $this->serviceLocator->get('db'); // This is where i'm getting the error from
        $db = $this->params('fms');

        $loginForm = new LoginForm();
        if ($this->request->isPost()) {

            $loginForm->setData($this->request->getPost());
            if ($loginForm->isValid()) {
                $auth = new AuthenticationService();
                $result = $auth->authenticate(new SqlAdapter(
                    $loginForm->get('email')->getValue(),
                    $loginForm->get('password')->getValue(),
                    $dbAdapter
            ));

                if ($result->getCode() == Result::SUCCESS) {
                    echo 'success';
                    return $this->redirect()->toUrl($this->url('')->fromRoute());
                } else {
                    echo 'fail';
                }

            }
        }

        $this->view->loginForm = $loginForm;
        return $this->view;

    }

我不知道我做错了什么。请谁来帮帮我:)

EN

回答 1

Stack Overflow用户

发布于 2014-07-08 15:36:58

你可能需要的是这个-

代码语言:javascript
复制
$dbAdapter = $this->serviceLocator->get('Zend\Db\Adapter\Adapter');

如果您需要精确的db数组,请执行以下操作-

代码语言:javascript
复制
$config = $this->serviceLocator->get('config');
$db_array = $config['db'];

我希望它能帮上忙。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24625882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档