From 634f02d2c3e04b9c7bde764256701fd100c4e195 Mon Sep 17 00:00:00 2001 From: hirocaster Date: Wed, 22 Dec 2010 19:20:37 +0900 Subject: [PATCH] Fixed error HydratorException error sample $ php ./app/console doctrine:mongodb:schema:create [Doctrine\ODM\MongoDB\Hydrator\HydratorException] You must configure a hydrator directory. See docs for details --- .../DoctrineMongoDBExtension.php | 22 ++++++++++++++++++- .../Resources/config/mongodb.xml | 4 ++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Bundle/DoctrineMongoDBBundle/DependencyInjection/DoctrineMongoDBExtension.php b/src/Symfony/Bundle/DoctrineMongoDBBundle/DependencyInjection/DoctrineMongoDBExtension.php index 3afb12308f12a..9b9af36ab11e2 100755 --- a/src/Symfony/Bundle/DoctrineMongoDBBundle/DependencyInjection/DoctrineMongoDBExtension.php +++ b/src/Symfony/Bundle/DoctrineMongoDBBundle/DependencyInjection/DoctrineMongoDBExtension.php @@ -31,6 +31,7 @@ class DoctrineMongoDBExtension extends Extension public function mongodbLoad($config, ContainerBuilder $container) { $this->createProxyDirectory($container->getParameter('kernel.cache_dir')); + $this->createHydratorDirectory($container->getParameter('kernel.cache_dir')); $this->loadDefaults($config, $container); $this->loadConnections($config, $container); $this->loadDocumentManagers($config, $container); @@ -52,6 +53,22 @@ protected function createProxyDirectory($tmpDir) } } + /** + * Create the Doctrine MongoDB ODM Document hydrator directory + */ + protected function createHydratorDirectory($tmpDir) + { + // Create document hydrator directory + $hydratorCacheDir = $tmpDir.'/doctrine/odm/mongodb/Hydrator'; + if (!is_dir($hydratorCacheDir)) { + if (false === @mkdir($hydratorCacheDir, 0777, true)) { + die(sprintf('Unable to create the Doctrine Hydrator directory (%s)', dirname($hydratorCacheDir))); + } + } elseif (!is_writable($hydratorCacheDir)) { + die(sprintf('Unable to write in the Doctrine Hydrator directory (%s)', $hydratorCacheDir)); + } + } + /** * Loads the default configuration. * @@ -116,7 +133,7 @@ protected function loadDocumentManager(array $documentManager, ContainerBuilder $defaultDocumentManager = $container->getParameter('doctrine.odm.mongodb.default_document_manager'); $defaultDatabase = isset($documentManager['default_database']) ? $documentManager['default_database'] : $container->getParameter('doctrine.odm.mongodb.default_database'); $proxyCacheDir = $container->getParameter('kernel.cache_dir').'/doctrine/odm/mongodb/Proxies'; - + $hydratorCacheDir = $container->getParameter('kernel.cache_dir').'/doctrine/odm/mongodb/Hydrator'; $odmConfigDef = new Definition('%doctrine.odm.mongodb.configuration_class%'); $container->setDefinition(sprintf('doctrine.odm.mongodb.%s_configuration', $documentManager['name']), $odmConfigDef); @@ -129,6 +146,9 @@ protected function loadDocumentManager(array $documentManager, ContainerBuilder 'setProxyDir' => $proxyCacheDir, 'setProxyNamespace' => $container->getParameter('doctrine.odm.mongodb.proxy_namespace'), 'setAutoGenerateProxyClasses' => $container->getParameter('doctrine.odm.mongodb.auto_generate_proxy_classes'), + 'setHydratorDir' => $hydratorCacheDir, + 'setHydratorNamespace' => $container->getParameter('doctrine.odm.mongodb.hydrator_namespace'), + 'setAutoGenerateHydratorClasses' => $container->getParameter('doctrine.odm.mongodb.auto_generate_hydrator_classes'), 'setDefaultDB' => $defaultDatabase, 'setLoggerCallable' => array(new Reference('doctrine.odm.mongodb.logger'), 'logQuery'), ); diff --git a/src/Symfony/Bundle/DoctrineMongoDBBundle/Resources/config/mongodb.xml b/src/Symfony/Bundle/DoctrineMongoDBBundle/Resources/config/mongodb.xml index 4dedd46473cc3..116b60bdc0c90 100755 --- a/src/Symfony/Bundle/DoctrineMongoDBBundle/Resources/config/mongodb.xml +++ b/src/Symfony/Bundle/DoctrineMongoDBBundle/Resources/config/mongodb.xml @@ -20,6 +20,10 @@ Proxies false + + Hydrator + false + Doctrine\Common\Cache\ArrayCache Doctrine\Common\Cache\ApcCache