1

私はこのチュートリアルに従っていますが、Zend\ServiceManager\ServiceManager::get は Zend\Db\Adapter\Adapter のインスタンスをフェッチまたは作成できませんでしたというエラーが発生しました

私はグーグルですべての解決策を試しましたが、うまくいきませんでした。助けてくださいpppp私は落ち込んでいます:|

参考までに: 私はこのスケルトンhttps://github.com/zendframework/ZendSkeletonApplicationを使用しています。私はzendをインストールしませんでした。

module.php 名​​前空間アルバム;

// Add these import statements:
use Album\Model\Album;
use Album\Model\AlbumTable;
use Zend\Db\ResultSet\ResultSet;
use Zend\Db\TableGateway\Tabl`enter code here`eGateway;

class Module
{
 public function getAutoloaderConfig()
 {
     return array(
         'Zend\Loader\ClassMapAutoloader' => array(
             __DIR__ . '/autoload_classmap.php',
         ),
         'Zend\Loader\StandardAutoloader' => array(
             'namespaces' => array(
                 __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
             ),
         ),
     );
 }

 public function getConfig()
 {
     return include __DIR__ . '/config/module.config.php';
 }

 public function getServiceConfig()
 {
     return array(
         'factories' => array(
             'Album\Model\AlbumTable' =>  function($sm) {
                 $tableGateway = $sm->get('AlbumTableGateway');
                 $table = new AlbumTable($tableGateway);
                 return $table;
             },
             'AlbumTableGateway' => function ($sm) {
                 $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
                 $resultSetPrototype = new ResultSet();
                 $resultSetPrototype->setArrayObjectPrototype(new Album());
                 return new TableGateway('album', $dbAdapter, null, $resultSetPrototype);
             },
         ),
     );
 }

}

グローバル.php

return array(
 'db' => array(
     'driver'         => 'Pdo',
     'dsn'            => 'mysql:dbname=aaa;host=aaa',
     'driver_options' => array(
         PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
     ),
 ),
 'service_manager' => array(
     'factories' => array(
         'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory',
     ),
 ),

);

私はこれらを読んで試しました: ZF2-getはgetAlbumTableのインスタンスを取得または作成できませんでした

ZendFramework 2 の ServiceNotFoundException、Rob Allen の例

いつもはっきりしないまま終わる

4

4 に答える 4

3

これは、DB 構成エラーが原因です。これを解決するには、メイン構成フォルダーの global.php で DB を構成する必要があります。コードを以下に示します。コピーして貼り付け、データベース名とパスワードを変更するだけです。

return array(
    'db' => array(
        'driver'         => 'Pdo',
        'dsn'            => 'mysql:dbname=zf2tutorial;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',
        ),
    ),
);
于 2014-02-28T11:09:33.587 に答える
1

これは、Ibm I シリーズ サーバーで問題が発生している場合に機能します。

この問題の原因は、IBMi が構成内の相対パスを処理できないことです。私は自分のマシンで次のように解決しました

'config_glob_paths' => array( '/www/local/zf2/config/autoload/{,*.}{global,local}.php', ),

つまり、'config_glob_paths' を application.config.php の相対パスではなく完全パスに設定します。

注: ローカルでエラーが発生している場合は、構成ファイルを確認してください。

于 2014-02-07T17:33:42.887 に答える
0

「my_project / config / autoload / global.php」に以下のコードを追加したところ、完全に機能しました。

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

私はOracleを使用しており、「local.php」に「ユーザー名/パスワード」を入れてください。

ありがとうございました!

于 2015-01-28T14:01:22.163 に答える