如何配置Bisna与Doctrine 2.1和Zend Framework 1.11.9配合使用? [编辑 - 我的错误] [英] How do I configure Bisna for use with Doctrine 2.1 and Zend Framework 1.11.9? [EDIT - my mistake]

查看:71
本文介绍了如何配置Bisna与Doctrine 2.1和Zend Framework 1.11.9配合使用? [编辑 - 我的错误]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我以前的Bisna版本(7月22日之前),根据 http://www.zendcasts.com/unit-testing-doctrine-2-entities/2011/02/

I had the previous version of Bisna (before July 22nd), with Doctrine 2.0 working good, according to the instructions in http://www.zendcasts.com/unit-testing-doctrine-2-entities/2011/02/.

昨天我决定升级到Doctrine 2.1,而且还要升级Bisna,因为它与Doctrine 2.1不兼容。

所以我删除了我的整个Doctrine和Bisna目录目录,引入了每个新的版本,将autoload init方法添加到引导程序,并更新了我的application.ini文件以及相关更改。

Yesterday I decided to upgrade to Doctrine 2.1, and had to upgrade Bisna as well, as it was incompatible with Doctrine 2.1.
So I deleted the entire Doctrine and Bisna directories from my library directory, brought in the new version of each of them, added the autoload init method to the bootstrap, and updated my application.ini file with the relevant changes.

但是,当我尝试访问应用程序(它在Doctrine 2.0和以前的Bisna版本之前工作)时,我得到以下异常:

However, when I try to access the application (which worked before fine with Doctrine 2.0 and the previous version of Bisna), I get the following exception:

Notice: Undefined index: annotationRegistry in /home/doron/workspace/myapp/library/Bisna/Doctrine/Container.php on line 569






高级信息:

该行(#569)是:


Advanced information:
That line (#569) is:

$this->startAnnotationRegistry($config['annotationRegistry']);

当我打印 $ config ,我得到以下内容:

When I print the contents of $config, I get the following:

array
  0 => 
    array
      'annotationRegistry' => 
    array
      'annotationFiles' => 
        array
          0 => string '/home/doron/workspace/myapp/application/../library/Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php' (length=103)
      'adapterClass' => string 'Doctrine\ORM\Mapping\Driver\AnnotationDriver' (length=44)
      'mappingNamespace' => string 'MyApp\Entity' (length=13)
      'mappingDirs' => 
    array
      0 => string '/home/doron/workspace/myapp/application/../library/MyApp/Entity' (length=65)
      'annotationReaderClass' => string 'Doctrine\Common\Annotations\AnnotationReader' (length=44)
      'annotationReaderCache' => string 'default' (length=7)

所以我可以看到 annotationRegistry 属性在一个数组内,代码期望它不在数组中。

So I can see that the annotationRegistry property is inside an array, where the code expects it to not be inside an array.

但这不是结束,因为我得到以下异常(以前的例外):

But this is not the end, as I get the following exception as well (below the previous exception):

Notice: Undefined index: drivers in /home/doron/workspace/myapp/library/Bisna/Doctrine/Container.php on line 571

所以我猜是不是配置正确,或者与Bisna有一个错误。

So I guess something is not configured properly, or there's a bug with Bisna.

这是我的application.ini:

This is my application.ini:

[production]

; --------------------------
; PHP Specific Configuration
; --------------------------
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
phpSettings.date.timezone = "EST"

includePaths.library = APPLICATION_PATH "/../library"
includePaths.resource = APPLICATION "/../library/Bisna/Application/Resource"

; ----------------------------------------
; Zend Framework Application Configuration
; ----------------------------------------
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"

appnamespace = "Application"

autoloaderNamespaces[] = "MyApp"
autoloaderNamespaces[] = "Bisna"
autoloaderNamespaces[] = "Symfony"
autoloaderNamespaces[] = "Doctrine"

pluginPaths.Bisna\Application\Resource\ = "Bisna/Application/Resource"

; ------------------------------
; Front Controller Configuration
; ------------------------------
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
resources.view[] =
resources.view.encoding = "UTF-8"
resources.view.doctype = "XHTML1_STRICT"
resources.view.contentType = "text/html; charset=UTF-8"

resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"

; ------------------------------------------------------------------------------
; Doctrine Class Loader Configuration
; ------------------------------------------------------------------------------

resources.doctrine.classLoader.loaderClass = "Doctrine\Common\ClassLoader"
resources.doctrine.classLoader.loaderFile  = APPLICATION_PATH "/../library/Doctrine/Common/ClassLoader.php"

resources.doctrine.classLoader.loaders.doctrine_common.namespace   = "Doctrine\Common"
resources.doctrine.classLoader.loaders.doctrine_common.includePath = APPLICATION_PATH "/../library"

resources.doctrine.classLoader.loaders.doctrine_dbal.namespace   = "Doctrine\DBAL"
resources.doctrine.classLoader.loaders.doctrine_dbal.includePath = APPLICATION_PATH "/../library"

resources.doctrine.classLoader.loaders.doctrine_orm.namespace   = "Doctrine\ORM"
resources.doctrine.classLoader.loaders.doctrine_orm.includePath = APPLICATION_PATH "/../library"

resources.doctrine.classLoader.loaders.symfony_console.namespace   = "Symfony\Component\Console"
resources.doctrine.classLoader.loaders.symfony_console.includePath = APPLICATION_PATH "/../library"

resources.doctrine.classLoader.loaders.symfony_yaml.namespace   = "Symfony\Component\Yaml"
resources.doctrine.classLoader.loaders.symfony_yaml.includePath = APPLICATION_PATH "/../library"


; ------------------------------------------------------------------------------
; Doctrine Cache Configuration
; ------------------------------------------------------------------------------

; Points to default cache instance to be used. Optional is only one cache is defined
resources.doctrine.cache.defaultCacheInstance = default

; Cache Instance configuration for "default" cache
resources.doctrine.cache.instances.default.adapterClass = "Doctrine\Common\Cache\MemcacheCache"
resources.doctrine.cache.instances.default.namespace    = "Application_"
resources.doctrine.cache.instances.default.options.servers.0.host = localhost
resources.doctrine.cache.instances.default.options.servers.0.port = 11211

; ------------------------------------------------------------------------------
; Doctrine DBAL Configuration
; ------------------------------------------------------------------------------

; Points to default connection to be used. Optional if only one connection is defined
resources.doctrine.dbal.defaultConnection = default

; Database configuration
;resources.doctrine.dbal.connections.default.parameters.wrapperClass = ""
resources.doctrine.dbal.connections.default.parameters.driver   = "pdo_mysql"
resources.doctrine.dbal.connections.default.parameters.dbname   = "myapp"
resources.doctrine.dbal.connections.default.parameters.host = "localhost"
resources.doctrine.dbal.connections.default.parameters.port = 3306
resources.doctrine.dbal.connections.default.parameters.user = "myapp"
resources.doctrine.dbal.connections.default.parameters.password = "myapp"
resources.doctrine.dbal.connections.default.parameters.charset = "utf-8"
resources.doctrine.dbal.connections.default.parameters.driverOptions.1002 = "SET NAMES 'UTF8'"


; ------------------------------------------------------------------------------
; Doctrine ORM Configuration
; ------------------------------------------------------------------------------

; Points to default EntityManager to be used. Optional if only one EntityManager is defined
resources.doctrine.orm.defaultEntityManager = default

; EntityManager configuration for "default" manager
resources.doctrine.orm.entityManagers.default.connection     = default
resources.doctrine.orm.entityManagers.default.proxy.autoGenerateClasses = false
resources.doctrine.orm.entityManagers.default.proxy.namespace           = "MyApp\Entity\Proxy"
resources.doctrine.orm.entityManagers.default.proxy.dir                 = APPLICATION_PATH "/../library/MyApp/Entity/Proxy"

resources.doctrine.orm.entityManagers.default.metadataDrivers.annotationRegistry.annotationFiles[]     = APPLICATION_PATH "/../library/Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php"

resources.doctrine.orm.entityManagers.default.metadataDrivers.0.adapterClass          = "Doctrine\ORM\Mapping\Driver\AnnotationDriver"
resources.doctrine.orm.entityManagers.default.metadataDrivers.0.mappingNamespace      = "MyApp\Entity"
resources.doctrine.orm.entityManagers.default.metadataDrivers.0.mappingDirs[]         = APPLICATION_PATH "/../library/MyApp/Entity"
resources.doctrine.orm.entityManagers.default.metadataDrivers.0.annotationReaderClass = "Doctrine\Common\Annotations\AnnotationReader"
resources.doctrine.orm.entityManagers.default.metadataDrivers.0.annotationReaderCache = default


[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
phpSettings.error_reporting = E_ALL | E_STRICT
resources.frontController.params.displayExceptions = 1

resources.doctrine.cache.instances.default.adapterClass = "Doctrine\Common\Cache\ArrayCache"
resources.doctrine.cache.instances.default.namespace    = "Application_"


推荐答案

这是我的错误,我没有注意到以下几行:

This is my mistake, I haven't noticed that the following lines:

resources.doctrine.orm.entityManagers.default.metadataDrivers.0.adapterClass          = "Doctrine\ORM\Mapping\Driver\AnnotationDriver"
resources.doctrine.orm.entityManagers.default.metadataDrivers.0.mappingNamespace      = "MyApp\Entity"
resources.doctrine.orm.entityManagers.default.metadataDrivers.0.mappingDirs[]         = APPLICATION_PATH "/../library/MyApp/Entity"
resources.doctrine.orm.entityManagers.default.metadataDrivers.0.annotationReaderClass = "Doctrine\Common\Annotations\AnnotationReader"
resources.doctrine.orm.entityManagers.default.metadataDrivers.0.annotationReaderCache = default

已重命名为

resources.doctrine.orm.entityManagers.default.metadataDrivers.drivers.0.adapterClass          = "Doctrine\ORM\Mapping\Driver\AnnotationDriver"
resources.doctrine.orm.entityManagers.default.metadataDrivers.drivers.0.mappingNamespace      = "MyApp\Entity"
resources.doctrine.orm.entityManagers.default.metadataDrivers.drivers.0.mappingDirs[]         = APPLICATION_PATH "/../library/MyApp/Entity"
resources.doctrine.orm.entityManagers.default.metadataDrivers.drivers.0.annotationReaderClass = "Doctrine\Common\Annotations\AnnotationReader"
resources.doctrine.orm.entityManagers.default.metadataDrivers.drivers.0.annotationReaderCache = default

(注意在 0 之前添加的驱动程序)。

(notice the drivers added before the0).

这篇关于如何配置Bisna与Doctrine 2.1和Zend Framework 1.11.9配合使用? [编辑 - 我的错误]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆