2016-11-07 7 views
0

Doctrine2からクラス構造をマップしようとしているときにエラーが発生します。Zend Framework 2のモジュール構造内で多くの名前空間をマッピングする際のDoctrineエラー

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

module 
    ModuleOne 
     config 
      module_config.php 
     src 
      ModuleOne 
       Entity 
        ClassOne.php 
      ModuleOneAdmin 
       Entity 
        ClassTwo.php 
        ClassTwoRepository.php 
     Module.php 
    ModuleTwo 
     config 
      module_config.php 
     src 
      ModuleTwo 
       Entity 
        ClassThree.php 
     Module.php 

を私は(ModuleOne/Module.phpで)私のオートローダは、このように設定されている、ModuleOne内2つの副名前空間をしましたので、次のように

マイZendのアプリケーションのモジュールが構成されていますModuleOne /設定/ module_config.phpで

は、教義が

'doctrine' => array(
    'driver' => array(
     __NAMESPACE__ . '_driver' => array(
      'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver', 
      'cache' => 'array', 
      'paths' => array(
       __DIR__ . '/../src/' . __NAMESPACE__ . '/Entity' 
      ) 
     ), 
     'orm_default' => array(
      'drivers' => array(
       __NAMESPACE__ . '\Entity' => __NAMESPACE__ . '_driver' 
      ), 
     ), 
    ), 
) 

を設定されている私たちですModuleOneとModuleTwoをコントローラとビューを所有する別のモジュール(モジュール構造では指定しなかったもの)に入れてください。

私は自分のアプリケーションを実行すると、それはエンティティのリポジトリのために呼び出す行に取得し、エラー:

$repository = $this->getEm()->getRepository('ModuleOneAdmin\Entity\ClassTwo'); 

エラーは次のとおりです。

The class 'ModuleOneAdmin\Entity\ClassTwo' was not found in the chain configured namespaces ModuleOne\Entity, ModuleTwo\Entity 

私が検索しましたStackOverflowやGoogle検索の他のサイトでは、このようなことに関する他の多くの質問がありましたが、私の問題に対処していませんでした。 Doctrineのように、内部マッピングでModuleOneAdminが見つかりません。私が紛失している設定がいくつかありますか?

ありがとうございます。

答えて

0

私は問題を発見しました。私は、管理エンティティフォルダのドライバへのパスをdoctrine設定に含めませんでした。

以下のコードを使用すると動作します。

'doctrine' => array(
    'driver' => array(
     __NAMESPACE__ . '_driver' => array(
      'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver', 
      'cache' => 'array', 
      'paths' => array(
       __DIR__ . '/../src/' . __NAMESPACE__ . '/Entity' 
      ) 
     ), 
     'orm_default' => array(
      'drivers' => array(
       __NAMESPACE__ . '\Entity' => __NAMESPACE__ . '_driver', 
       __NAMESPACE__ . 'Admin\Entity' => __NAMESPACE__ . '_driver' 
      ), 
     ), 
    ), 
) 
関連する問題