2013-09-28 2 views
1

Я пытаюсь изучить Zend Framework 2 с помощью представленного скелетного приложения, однако у меня нет какого-либо предыдущего опыта работы в Zend. Я знаю о MVC из других фреймворков, например. yii, symfony.Zend Framwork 2 - конфигурация и пример подключения mysqli

Мое приложение скелета, похоже, отлично загружается, а затем следующий шаг - настроить соединение MySQL db в приложении. Так что я попытался ответить на вопрос следующий по:

Zend Frameworkd 2 Database connection

Но это не работало для меня, так что мне интересно, почему. Мой код:

В папке config/autoload/ я создал файл с именем db.local.php и добавил следующее:

return array(
    'db' => array(
    'driver' => 'Mysqli', 
    'database' => 'xxx', 
    'username' => 'sxxx', 
    'password' => 'xxxE', 
    'hostname' => 'localhost' 
), 
    'service_manager' => array(
    'aliases' => array(
     'db' => 'Zend\Db\Adapter\Adapter', 
    ), 
), 
); 

И в контроллер по умолчанию в /module/Application/src/Application/Controller в файле IndexController.php я добавил следующее для проверки дб, но я не вижу каких-либо ошибок или какой-либо выход из этого контроллера:

public function indexAction() 
{ 
    $this->layout()->myvar = 'bla'; 

    $db=$this->getServiceLocator()->get('db'); 
    //var_dump($db); nothing comes here too. 

    $statement= $db->query('SELECT * FROM `ew_content` WHERE `con_id` = 1'); 
    var_dump($statement); // this also empty 

    $isconnected = $db->getDriver()->getConnection()->isConnected(); 
    if($isconnected){ 
     $message = 'connected'; 
    } else { 
     $message = 'not Valid data field'; 
    } 
    //no output here either 

    return new ViewModel(array(
     'customMessageForgotPassword' => 'Error!', 
    )); 
} 
+0

Ждите ничего получать выход из ваших действий? Вы пробовали просто повторять «привет», чтобы узнать, напечатано ли это? – Pankrates

+0

Да, он идет к правильному контроллеру, echo hello печатает, нужно ли добавлять какие-либо настройки, чтобы добавить этот новый файл db.local.php? или есть что-то еще, что мне нужно сделать в конфиге? – mahen3d

+0

Убедитесь, что вы не пропустили массив '' service_manager '=> ( ' заводы '=> массив ( ' Zend \ Db \ Adapter \ Adapter '=>' Zend \ Db \ Adapter \ AdapterServiceFactory ', ), ), 'часть. – akond

ответ

1

благодарит за akond, реальная проблема выглядит как я должен сделать создание фабрики объекта БД в диспетчере службы конфигурации. Таким образом, я должен добавить следующую строку в db.local.php

'service_manager' => array( 
    'factories' => array( 
     'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory', 
    ), 
), 

полный рабочий код конфигурации находится ниже,

return array(
'db' => array(
    'driver'  => 'Mysqli', 
    'username'  => 'xxx', 
    'password'  => 'xxx', 
    'database'  => 'xxxx', 
    'host'   => 'localhost' 
), 
'service_manager' => array(
    'factories' => array(
      'translator' => 'MvcTranslator', 
      'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory', 
    ), 
    'aliases' => array(
     'db' => 'Zend\Db\Adapter\Adapter', 
    ), 
), 

); 
Смежные вопросы