2013-02-20 78 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项目网站以获取有关安装的更多详细信息。