2016-11-07 14 views
0

我在從Doctrine2嘗試映射我的類結構時得到一個錯誤。在Zend Framework 2模塊結構中映射許多命名空間的原則錯誤

我Zend的應用程序的模塊結構如下:

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 

我有2子命名空間內ModuleOne的,所以,我的自動加載磁帶機(在ModuleOne的/ Module.php)配置是這樣的:

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

在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' 
      ), 
     ), 
    ), 
)