2013-02-20 35 views
2

我有一個工作的ZF2(骨架)應用程序,並希望整合主義。沒有作曲家的ZF2 +主義

我已經從github上下載了2個模塊(DoctrineModule和DoctrineORMModule),因爲我無法使用作曲家(所以請不要回答;「get composer」)。

後試圖找到我不斷收到以下錯誤的問題時間:

致命錯誤:類「原則\ COMMON \批註\ AnnotationRegistry」學說中沒有發現/ DoctrineModule/src目錄/ DoctrineModule/Module.php在線54.

我花了幾個小時的搜索和嘗試調試,但我找不到解決方法。請幫幫我。

+1

出於好奇,_why_你無法使用Composer?有沒有辦法讓它在沒有它的情況下工作,但也許我們可以幫你弄清楚,然後這不會是一個問題? – 2013-02-20 12:07:49

+1

您需要將所有Doctrine名稱空間正確添加到自動裝載器中。因此,至少需要'Doctrine','DoctrineModule'和'DoctrineORMModule' – Sam 2013-02-20 12:12:06

+0

我需要在哪裏添加它們(哪個文件?)我已經將模塊的名稱空間添加到配置並將行添加到module.config.php – Floris 2013-02-20 12:13:36

回答

0

嘗試編輯以下方法在應用程序模塊的Module.php:

public function getAutoloaderConfig() 
{ 
    return array(
     'Zend\Loader\StandardAutoloader' => array(
      'namespaces' => array(
       __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__, 
       'Doctrine' => //Path where your doctrine dist resides 
      ), 
     ), 
    ); 
} 

沒有必要定義DoctrineModuleDoctrineORMModule因爲這種自動加載配置都ZF2模塊,並且已經提供自動加載配置。

5

DoctrineORMModule沒有明確支持自動加載沒有作曲家(因爲它是一團糟)。

作爲的DoctrineORMModule電流(0.7.*)版本,所需要的包以下:

你可以做的是定義在你的程序骨架中init_autoloader.php的所有自動加載的命名空間(解釋的混亂)。更換該代碼是關於自動加載工廠的部分:

Zend\Loader\AutoloaderFactory::factory(array(
    'Zend\Loader\StandardAutoloader' => array(
     'autoregister_zf' => true, 
     'namespaces' => array(
      'Doctrine\Common' => __DIR__ . '/vendor/doctrine/common', 
      'Doctrine\DBAL'  => __DIR__ . '/vendor/doctrine/dbal', 
      'Symfony\Console' => __DIR__ . '/vendor/symfony/console', 
      'DoctrineModule' => __DIR__ . '/vendor/doctrine/doctrine-module', 
      'DoctrineORMModule' => __DIR__ . '/vendor/doctrine/doctrine-orm-module', 
     ), 
    ), 
)); 

你必須對自己的

由於模塊的0.8.*版本,依賴關係會增加不少配置各種git的子模塊由於最近如何拆分doctrine/common,所以請考慮找到開始使用作曲家的解決方案,否則將來只會拖延巨大的問題。

此解決方案現在應該可以工作。

0

表單註釋需要Doctrine \ Common,其中包含註釋解析引擎。安裝Doctrine \ Common的最簡單方法是如果您使用Composer;只需更新您的composer.json並將以下行添加到require部分:

「doctrine/common」:「> = 2.1」, 然後運行php composer.phar更新以安裝依賴關係。

如果您不使用Composer,請訪問Doctrine項目網站以獲取有關安裝的更多詳細信息。