1

指定されたスケルトン アプリケーションを使用して Zend Framework 2 を学習しようとしていますが、Zend の経験はありません。yii、symfony などの他のフレームワークの MVC については知っています。

私のスケルトン アプリは問題なくロードされているようです。次のステップは、MySQL db 接続をアプリケーションに構成することです。だから私は次の質問の答えを試しました:

Zend Frameworkd 2 データベース接続

しかし、それは私にはうまくいかなかったので、なぜだろうと思っています。私のコードは次のとおりです。

フォルダーに、次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 のデフォルトのコントローラーで、db をテストするために以下を追加しましたが、このコントローラーからのエラーや出力は表示されません。

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

1 に答える 1

1

akond に感謝します。実際の問題は、サービス マネージャーの構成で db オブジェクトのファクトリ作成を行ったようです。したがって、次の行を 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',
    ),
),

);
于 2013-09-29T02:20:54.370 に答える