2010-12-09 75 views
6

我使用Zend框架與我的應用程序模塊和I在以同樣的方式整合原則2很感興趣:Zend框架採用模塊式結構+學說2

一個模塊包含:

  • 控制器
  • 車型
  • 意見
  • 助手

Doctrine 2的問題在於它需要有一個實體目錄以及一個代理目錄。我希望實體目錄是我模塊化結構中的模型目錄,並且基於我的研究,我還沒有找到解決方案。

目前,該默認模塊中的元數據實現看起來是這樣的:

$config->setMetadataDriverImpl($config->newDefaultAnnotationDriver(APPLICATION_PATH . '/modules/default/models')); 

如果我想添加一個新的模塊,讓我們說「CMS」我沒有與學說有管理模型的方式。

有沒有人有解決這個問題的方法?

+0

我知道有即將到來的網絡研討會:在Zend框架V1 + V2學說14日 - 12月2010 http://www.zend.com/en/company/news/event/webinar-zend-framework-v1-doctrine-v2 – tawfekov 2010-12-09 13:52:58

回答

4

經過幾個小時的工作,我想出了正確的解決方案。需要指出的是,Doctrine的\ ORM \ Configuration類的newDefaultAnnotationDriver,setProxyDir和setProxyNamespace方法也可以接收數組參數。

這是說,你需要通過與模型路徑陣列的每一個模塊,它會工作

+0

+1。可能是我會採取的方法。 – 2010-12-09 21:02:35

0

我有我的代理(生成自動)在應用程序級別的文件夾,這裏是我的目錄結構:

/project 
    /application 
     /domain 
      /proxies 
     /configs 
     /modules 
      /blog 
       /controllers 
       /views 
       /domain 
        /entities 
        /services 
        /repositories 
    /library 
    /public 
    /data 
0

如果每個模塊

<?php 
class User_Bootstrap extends Zend_Application_Module_Bootstrap 
{ 
    protected function _initAutoload() 
    { 
     $autoloader = new Zend_Application_Module_Autoloader(array(
      'namespace' => 'User_', 
      'basePath' => dirname(__FILE__) . '/modules/user', 
      )); 
      return $autoloader; 
    } 
} 

創建的啓動文件,把這個默認bootsrap加載默認模塊的型號

protected function _initAutoload() 
    { 
     $autoloader = new Zend_Application_Module_Autoloader(array(
      'namespace' => 'Default_', 
      'basePath' => dirname(__FILE__) . '/modules/default', 
      )); 
      return $autoloader; 
    } 

它會正常工作

+0

是的,自從我發佈這個問題後,情況發生了變化。現在這個問題有不同的解決方案。當我寫這篇學說時仍處於測試階段,Zend Framework還沒有模塊bootstraps :) – bedeabza 2011-07-25 13:02:55