@@ -31,6 +31,7 @@ class DoctrineMongoDBExtension extends Extension
3131 public function mongodbLoad ($ config , ContainerBuilder $ container )
3232 {
3333 $ this ->createProxyDirectory ($ container ->getParameter ('kernel.cache_dir ' ));
34+ $ this ->createHydratorDirectory ($ container ->getParameter ('kernel.cache_dir ' ));
3435 $ this ->loadDefaults ($ config , $ container );
3536 $ this ->loadConnections ($ config , $ container );
3637 $ this ->loadDocumentManagers ($ config , $ container );
@@ -52,6 +53,22 @@ protected function createProxyDirectory($tmpDir)
5253 }
5354 }
5455
56+ /**
57+ * Create the Doctrine MongoDB ODM Document hydrator directory
58+ */
59+ protected function createHydratorDirectory ($ tmpDir )
60+ {
61+ // Create document hydrator directory
62+ $ hydratorCacheDir = $ tmpDir .'/doctrine/odm/mongodb/Hydrators ' ;
63+ if (!is_dir ($ hydratorCacheDir )) {
64+ if (false === @mkdir ($ hydratorCacheDir , 0777 , true )) {
65+ die (sprintf ('Unable to create the Doctrine Hydrator directory (%s) ' , dirname ($ hydratorCacheDir )));
66+ }
67+ } elseif (!is_writable ($ hydratorCacheDir )) {
68+ die (sprintf ('Unable to write in the Doctrine Hydrator directory (%s) ' , $ hydratorCacheDir ));
69+ }
70+ }
71+
5572 /**
5673 * Loads the default configuration.
5774 *
@@ -74,6 +91,8 @@ protected function loadDefaults(array $config, ContainerBuilder $container)
7491 'metadata_cache_driver ' ,
7592 'proxy_namespace ' ,
7693 'auto_generate_proxy_classes ' ,
94+ 'hydrator_namespace ' ,
95+ 'auto_generate_hydrator_classes ' ,
7796 'default_database ' ,
7897 );
7998 foreach ($ options as $ key ) {
@@ -116,6 +135,7 @@ protected function loadDocumentManager(array $documentManager, ContainerBuilder
116135 $ defaultDocumentManager = $ container ->getParameter ('doctrine.odm.mongodb.default_document_manager ' );
117136 $ defaultDatabase = isset ($ documentManager ['default_database ' ]) ? $ documentManager ['default_database ' ] : $ container ->getParameter ('doctrine.odm.mongodb.default_database ' );
118137 $ proxyCacheDir = $ container ->getParameter ('kernel.cache_dir ' ).'/doctrine/odm/mongodb/Proxies ' ;
138+ $ hydratorCacheDir = $ container ->getParameter ('kernel.cache_dir ' ).'/doctrine/odm/mongodb/Hydrators ' ;
119139
120140 $ odmConfigDef = new Definition ('%doctrine.odm.mongodb.configuration_class% ' );
121141 $ container ->setDefinition (sprintf ('doctrine.odm.mongodb.%s_configuration ' , $ documentManager ['name ' ]), $ odmConfigDef );
@@ -129,6 +149,9 @@ protected function loadDocumentManager(array $documentManager, ContainerBuilder
129149 'setProxyDir ' => $ proxyCacheDir ,
130150 'setProxyNamespace ' => $ container ->getParameter ('doctrine.odm.mongodb.proxy_namespace ' ),
131151 'setAutoGenerateProxyClasses ' => $ container ->getParameter ('doctrine.odm.mongodb.auto_generate_proxy_classes ' ),
152+ 'setHydratorDir ' => $ hydratorCacheDir ,
153+ 'setHydratorNamespace ' => $ container ->getParameter ('doctrine.odm.mongodb.hydrator_namespace ' ),
154+ 'setAutoGenerateHydratorClasses ' => $ container ->getParameter ('doctrine.odm.mongodb.auto_generate_hydrator_classes ' ),
132155 'setDefaultDB ' => $ defaultDatabase ,
133156 'setLoggerCallable ' => array (new Reference ('doctrine.odm.mongodb.logger ' ), 'logQuery ' ),
134157 );
0 commit comments