2011-08-01 6 views
6

Miałem poprzednią wersję Bisny (przed 22 lipca), z Doctrine 2.0 działa dobrze, zgodnie z instrukcjami w http://www.zendcasts.com/unit-testing-doctrine-2-entities/2011/02/.Jak skonfigurować Bisnę do użytku z Doctrine 2.1 i Zend Framework 1.11.9? [EDIT - mój błąd]

Wczoraj postanowiłem uaktualnić do Doctrine 2.1, i musiałem również ulepszyć Bisnę, ponieważ było niezgodne z Doctrine 2.1.
Więc usunąłem wszystkie katalogi Doctrine i Bisna z mojego katalogu , wprowadziłem nową wersję każdego z nich, dodałem metodę autoload init do bootstrapu i zaktualizowałem mój plik application.ini z odpowiednimi zmianami.

Jednak przy próbie dostępu do aplikacji (który pracował wcześniej w porządku z doktryną 2.0 i poprzedniej wersji Bisna), otrzymuję następujący wyjątek:

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

zaawansowane informacje:
że linia (# 569) to:

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

Kiedy wydrukować zawartość $config, mam następujące:

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) 

Widzę więc, że właściwość annotationRegistry znajduje się wewnątrz tablicy, w której kod oczekuje, że nie znajduje się wewnątrz tablicy.

Ale to nie koniec, ponieważ pojawia się następujący wyjątek, jak również (poniżej poprzedniego wyjątku):

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

Więc myślę, że coś nie jest poprawnie skonfigurowany, czy istnieje błąd z Bisna.

To mój 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_" 

Odpowiedz

8

To jest mój błąd, nie zauważyłem, że następujące linie:

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 

zostały przemianowane na

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 

(zwróć uwagę na drivers dodany przed 0).