【问题标题】:Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for dbZend\ServiceManager\ServiceManager::get 无法获取或创建 db 实例
【发布时间】:2014-07-08 07:19:37
【问题描述】:

我已经制作了一个登录表单。 我总是在我的控制器中收到这个错误,它无法获取或创建这个数据库的实例。我已阅读有关它的所有文档以及发生此错误的原因。我尝试了一切来解决这个问题,但它仍然无法正常工作。有人可以帮助我。我正在将我的数据库用于其他事情,它可以建立连接,但是当我想加载登录页面时,我收到了这个错误。

这是我 global.php 中的代码

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',
        ),
    ),
);

这是我的控制器

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;

    }

我不知道我在这里做错了什么。请有人帮助我:)

【问题讨论】:

  • ow,这是错误:Zend\ServiceManager\ServiceManager::get 无法为 db 获取或创建实例

标签: database zend-framework login frameworks zend-framework2


【解决方案1】:

你可能需要的是这个 -

$dbAdapter = $this->serviceLocator->get('Zend\Db\Adapter\Adapter');


如果您需要确切的 db 数组,请执行此操作 -

$config = $this->serviceLocator->get('config');
$db_array = $config['db'];

希望对你有帮助。

【讨论】:

  • 非常感谢。它现在正在工作。我认为 $this->serviceLocator->get('db');其中 ->get('db') 必须与以下名称相同: return array( 'db' => array(
猜你喜欢
  • 1970-01-01
  • 2012-12-02
  • 2013-03-26
  • 2014-01-14
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 2015-03-10
  • 2017-05-25
相关资源
最近更新 更多