2017-06-14 5 views
0

私は、次のステートメントでdatabaseadapterを取得しよう:servicemanagerのうち、dbadapter取得する方法

エラー getServiceLocator 『「名前のプラグインは、』プラグインマネージャでは見つかりませんでした
$dbAdapter = $this->getServiceLocator()->get('db'); 

私が手Zend \ Mvc \ Controller \ PluginManager "

私のmodule.phpで検索しています(これは正しいファイルですか?)私は理解している問題かもしれません。私はRalph Eggertとzendのドキュメントから記事を読みました。私はservicemanagerと任意の設定情報を得ることができることを理解しました。しかし、私が見つけたすべての文書はZend2のためのものです。

だから私のmodule.phpに、私はこのような何か(スニペット)を参照してくださいあり

public function getServiceConfig() 
{ 
    return [ 
      'factories' => [ 
        Model\ImportTable::class => function($container) { 
         $tableGateway = $container->get(Model\ImportTableGateway::class); 
         return new Model\ImportTable($tableGateway); 
        }, 
        Model\ImportTableGateway::class => function ($container) { 
         $dbAdapter = $container->get(AdapterInterface::class); 
         $resultSetPrototype = new ResultSet(); 
         $resultSetPrototype->setArrayObjectPrototype(new Model\Import()); 
         return new TableGateway('t_dcl', $dbAdapter, null, $resultSetPrototype); 
        }, 
        Model\DclimportTable::class => function($container) { 
         $tableGateway = $container->get(Model\DclimportTableGateway::class); 
         return new Model\DclimportTable($tableGateway); 
        }, 
        Model\DclimportTableGateway::class => function ($container) { 
         $dbAdapter = $container->get(AdapterInterface::class); 
         $resultSetPrototype = new ResultSet(); 
         $resultSetPrototype->setArrayObjectPrototype(new Model\Dclimport()); 
         return new TableGateway('t_dcl_import', $dbAdapter, null, $resultSetPrototype); 
        }, 

を私は変数$ dbAdapterを参照してくださいが、どのように私は、この変数を得ることができますか?上記のエラーはZEND3を使用している可能性があります。このメソッドは推奨されていませんか?移行情報が見つかりませんでした。

とにかく誰かが私に説明して、どのようにこれらのキーをmodule.phpから取得することができますか?その場合、そこに独自の工場を作成しますか?私はそれが本当に基本的な質問であることを知っていますが、私はこの権利を得ることができないと私はいつも再び私を追い越すだろうと思います。

答えて

1

コントローラ内のサービスロケータは、バージョン2.7では廃止され、バージョン3.0では削除されました。あなたのコードを修正するには

  • あなたがgetServiceLocator()を呼び出し、すべてのケースを見つけ、彼らは検索サービスを識別します。
  • これらのサービスをコンストラクタ経由で受け入れるようにコントローラを更新します。
  • コントローラのファクトリクラスをまだ作成していない場合は作成します。
  • 工場では、適切なサービスをプルして、コントローラのコンストラクタに渡します。

さらに詳しい情報はmigration docsにあります。

関連する問題