doctrine / DoctrineORMModule

Doctrine ORM Module for Laminas
https://www.doctrine-project.org/projects/doctrine-orm-module.html
MIT License
437 stars 229 forks source link

An exception was raised while creating "doctrine.entitymanager.orm_default"; no instance returned #81

Closed ghost closed 12 years ago

ghost commented 12 years ago

File:

vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php:679

Message:

An exception was raised while creating "doctrine.entitymanager.orm_default"; no instance returned

https://github.com/doctrine/DoctrineORMModule/blob/master/src/DoctrineORMModule/Service/EntityManagerFactory.php#L14

ghost commented 12 years ago
$options = $this->getOptions($sl, 'entitymanager');
var_dump($options);
object(DoctrineORMModule\Options\EntityManager)#2697 (3) { ["configuration":protected]=> string(11) "orm_default" ["connection":protected]=> string(11) "orm_default" ["__strictMode__":protected]=> bool(true) } 
Ocramius commented 12 years ago

@booradleys can you please check your previous exceptions?

ghost commented 12 years ago

@ocramius,

Previous : An exception was raised while creating "doctrine.connection.orm_default"; no instance returned (vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php:679)

Previous : An exception was raised while creating "doctrine.eventmanager.orm_default"; no instance returned (vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php:679)

Previous: Invalid event subscriber "Closure" given, must be a service name, class name or an instance implementing Doctrine\Common\EventSubscriber (vendor\doctrine\doctrine-module\src\DoctrineModule\Service\EventManagerFactory.php:58)

Stack trace:

#0 [internal function]: DoctrineModule\Service\EventManagerFactory->createService(Object(Zend\ServiceManager\ServiceManager), 'doctrine.eventm...', 'doctrine.eventm...')
#1 vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php(672): call_user_func(Array, Object(Zend\ServiceManager\ServiceManager), 'doctrine.eventm...', 'doctrine.eventm...')
#2 vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php(763): Zend\ServiceManager\ServiceManager->createServiceViaCallback(Array, 'doctrine.eventm...', 'doctrine.eventm...')
#3 vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php(438): Zend\ServiceManager\ServiceManager->createFromFactory('doctrine.eventm...', 'doctrine.eventm...')
#4 vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php(391): Zend\ServiceManager\ServiceManager->create(Array)
#5 vendor\doctrine\doctrine-module\src\DoctrineModule\Service\ConnectionFactory.php(57): Zend\ServiceManager\ServiceManager->get('doctrine.eventm...')
#6 [internal function]: DoctrineModule\Service\ConnectionFactory->createService(Object(Zend\ServiceManager\ServiceManager), 'doctrine.connec...', 'doctrine.connec...')
#7 vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php(672): call_user_func(Array, Object(Zend\ServiceManager\ServiceManager), 'doctrine.connec...', 'doctrine.connec...')
#8 vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php(763): Zend\ServiceManager\ServiceManager->createServiceViaCallback(Array, 'doctrine.connec...', 'doctrine.connec...')
#9 vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php(438): Zend\ServiceManager\ServiceManager->createFromFactory('doctrine.connec...', 'doctrine.connec...')
#10 vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php(391): Zend\ServiceManager\ServiceManager->create(Array)
#11 vendor\doctrine\doctrine-orm-module\src\DoctrineORMModule\Service\EntityManagerFactory.php(14): Zend\ServiceManager\ServiceManager->get('doctrine.connec...')
#12 [internal function]: DoctrineORMModule\Service\EntityManagerFactory->createService(Object(Zend\ServiceManager\ServiceManager), 'doctrine.entity...', 'doctrine.entity...')
#13 vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php(672): call_user_func(Array, Object(Zend\ServiceManager\ServiceManager), 'doctrine.entity...', 'doctrine.entity...')
#14 vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php(763): Zend\ServiceManager\ServiceManager->createServiceViaCallback(Array, 'doctrine.entity...', 'doctrine.entity...')
#15 vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php(438): Zend\ServiceManager\ServiceManager->createFromFactory('doctrine.entity...', 'doctrine.entity...')
#16 vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php(391): Zend\ServiceManager\ServiceManager->create(Array)
#17 module\Application\src\Application\Model\Service\CommonService.php(53): Zend\ServiceManager\ServiceManager->get('doctrine.entity...')
#18 module\Membre\src\Membre\Model\Service\AuthenticationService.php(35): Application\Model\Service\CommonService->getEm()
#19 module\Membre\src\Membre\Model\Service\MembreService.php(129): Membre\Model\Service\AuthenticationService->authenticate('prod@prod.com', 'admin')
#20 module\Membre\src\Membre\Controller\IdentificationController.php(22): Membre\Model\Service\MembreService->identification('prod@prod.com', 'admin')
#21 vendor\zendframework\zendframework\library\Zend\Mvc\Controller\AbstractActionController.php(137): Membre\Controller\IdentificationController->loginAction()
#22 [internal function]: Zend\Mvc\Controller\AbstractActionController->execute(Object(Zend\Mvc\MvcEvent))
#23 vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(453): call_user_func(Array, Object(Zend\Mvc\MvcEvent))
#24 vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(193): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
#25 vendor\zendframework\zendframework\library\Zend\Mvc\Controller\AbstractActionController.php(104): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
#26 vendor\zendframework\zendframework\library\Zend\Mvc\DispatchListener.php(139): Zend\Mvc\Controller\AbstractActionController->dispatch(Object(Zend\Http\PhpEnvironment\Request), Object(Zend\Http\PhpEnvironment\Response))
#27 [internal function]: Zend\Mvc\DispatchListener->onDispatch(Object(Zend\Mvc\MvcEvent))
#28 vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(453): call_user_func(Array, Object(Zend\Mvc\MvcEvent))
#29 vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(193): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
#30 vendor\zendframework\zendframework\library\Zend\Mvc\Application.php(305): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
#31 library\Mix\Mvc\Application.php(46): Zend\Mvc\Application->run()
Ocramius commented 12 years ago

This when using ZfcUserDoctrineORM?

ghost commented 12 years ago

Yes

Ocramius commented 12 years ago

This issue was raised before. Please ask on the ZfcUserDoctrineORM issue tracker.

ghost commented 12 years ago

This error occurs even with ZfcUser and ZfcUserDoctrineORM deactivated.

ghost commented 12 years ago

Exception is raised here: https://github.com/doctrine/DoctrineModule/blob/master/src/DoctrineModule/Service/ConnectionFactory.php#L57

$sl->get('doctrine.eventmanager.orm_default')

ghost commented 12 years ago

Oups, my apologies, I found error. I wanted to add translatable listener. Can you tell me what's the correct way to to this ?

'eventmanager' => array(
            'orm_default' => array(             
                'subscribers' => array(
                    'application_translatable_listener' => function () {
                        // Gedmo: attach listener to event manager
                        $translatableListener = new \Gedmo\Translatable\TranslatableListener();
                        $translatableListener->setTranslatableLocale('fr');
                        $translatableListener->setDefaultLocale('fr');
                        $translatableListener->setTranslationFallback(true);
                        return $translatableListener;
                    },
                )

            )
        ),
Ocramius commented 12 years ago

You should provide the id of a service you defined, not a callback :-)

Just try with something like following:

<?php

return array(
    'doctrine' => array(
        'eventmanager' => array(
            'orm_default' => array(
                'subscribers' => array(
                    'my_gedmo_translatable_listener',
                ),
            ),
        ),
    ),

    'service_manager' => array(
        'factories' => array(
            'my_gedmo_translatable_listener' => function ($sm) {
                // Gedmo: attach listener to event manager
                $translatableListener = new \Gedmo\Translatable\TranslatableListener();
                $translatableListener->setTranslatableLocale('fr');
                $translatableListener->setDefaultLocale('fr');
                $translatableListener->setTranslationFallback(true);
                return $translatableListener;
            },
        ),
    ),
);
ghost commented 12 years ago

@Ocramius Thank you very much !