zfcampus / zf-hal

BSD 3-Clause "New" or "Revised" License
30 stars 49 forks source link

Hal view helper factory should pull dependency on the hal controller plugin from the service locator #77

Closed andriesss closed 9 years ago

andriesss commented 9 years ago

Currently the HalViewHelper factory has a hardcoded dependency on ZF\Hal\Plugin\Hal. This dependency should be pulled from the service locator, so it can be overriden.

mdasrafael commented 9 years ago

Hi there, In the application I`m working with I noticed that the absence of this line is generating the following error:

An error occurred An error occurred during execution; please try again later. Additional information: Zend\ServiceManager\Exception\ServiceNotCreatedException

File: /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:909 Message: An exception was raised while creating "Hal"; no instance returned Stack trace:

0 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/AbstractPluginManager.php(245): Zend\ServiceManager\ServiceManager->createServiceViaCallback(Array, 'hal', 'Hal')

1 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/AbstractPluginManager.php(205): Zend\ServiceManager\AbstractPluginManager->createServiceViaCallback(Array, 'hal', 'Hal')

2 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php(612): Zend\ServiceManager\AbstractPluginManager->createFromFactory('hal', 'Hal')

3 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php(572): Zend\ServiceManager\ServiceManager->doCreate('Hal', 'hal')

4 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php(504): Zend\ServiceManager\ServiceManager->create(Array)

5 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/AbstractPluginManager.php(103): Zend\ServiceManager\ServiceManager->get('Hal', true)

6 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/PluginManager.php(82): Zend\ServiceManager\AbstractPluginManager->get('Hal', NULL, true)

7 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractController.php(285): Zend\Mvc\Controller\PluginManager->get('Hal', NULL)

8 /var/www/manager/stage/dist/vendor/zfcampus/zf-rest/src/RestController.php(468): Zend\Mvc\Controller\AbstractController->plugin('Hal')

9 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractRestfulController.php(368): ZF\Rest\RestController->getList()

10 /var/www/manager/stage/dist/vendor/zfcampus/zf-rest/src/RestController.php(276): Zend\Mvc\Controller\AbstractRestfulController->onDispatch(Object(Zend\Mvc\MvcEvent))

11 [internal function]: ZF\Rest\RestController->onDispatch(Object(Zend\Mvc\MvcEvent))

12 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(468): call_user_func(Array, Object(Zend\Mvc\MvcEvent))

13 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(207): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))

14 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractController.php(117): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))

15 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractRestfulController.php(300): Zend\Mvc\Controller\AbstractController->dispatch(Object(ZF\ContentNegotiation\Request), Object(Zend\Http\PhpEnvironment\Response))

16 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/Mvc/DispatchListener.php(114): Zend\Mvc\Controller\AbstractRestfulController->dispatch(Object(ZF\ContentNegotiation\Request), Object(Zend\Http\PhpEnvironment\Response))

17 [internal function]: Zend\Mvc\DispatchListener->onDispatch(Object(Zend\Mvc\MvcEvent))

18 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(468): call_user_func(Array, Object(Zend\Mvc\MvcEvent))

19 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(207): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))

20 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/Mvc/Application.php(313): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))

21 /var/www/manager/stage/dist/public/index.php(24): Zend\Mvc\Application->run()

22 {main}

Previous exceptions: Zend\ServiceManager\Exception\ServiceNotCreatedException

File: /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:909 Message: An exception was raised while creating "Hal"; no instance returned Stack trace:

0 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/AbstractPluginManager.php(245): Zend\ServiceManager\ServiceManager->createServiceViaCallback(Array, 'hal', 'Hal')

1 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/AbstractPluginManager.php(205): Zend\ServiceManager\AbstractPluginManager->createServiceViaCallback(Array, 'hal', 'Hal')

2 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php(612): Zend\ServiceManager\AbstractPluginManager->createFromFactory('hal', 'Hal')

3 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php(572): Zend\ServiceManager\ServiceManager->doCreate('Hal', 'hal')

4 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php(504): Zend\ServiceManager\ServiceManager->create(Array)

5 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/AbstractPluginManager.php(103): Zend\ServiceManager\ServiceManager->get('Hal', true)

6 /var/www/manager/stage/dist/vendor/zfcampus/zf-hal/src/Factory/HalControllerPluginFactory.php(23): Zend\ServiceManager\AbstractPluginManager->get('Hal')

7 [internal function]: ZF\Hal\Factory\HalControllerPluginFactory->createService(Object(Zend\Mvc\Controller\PluginManager), 'hal', 'Hal')

8 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php(902): call_user_func(Array, Object(Zend\Mvc\Controller\PluginManager), 'hal', 'Hal')

9 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/AbstractPluginManager.php(245): Zend\ServiceManager\ServiceManager->createServiceViaCallback(Array, 'hal', 'Hal')

10 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/AbstractPluginManager.php(205): Zend\ServiceManager\AbstractPluginManager->createServiceViaCallback(Array, 'hal', 'Hal')

11 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php(612): Zend\ServiceManager\AbstractPluginManager->createFromFactory('hal', 'Hal')

12 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php(572): Zend\ServiceManager\ServiceManager->doCreate('Hal', 'hal')

13 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php(504): Zend\ServiceManager\ServiceManager->create(Array)

14 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/AbstractPluginManager.php(103): Zend\ServiceManager\ServiceManager->get('Hal', true)

15 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/PluginManager.php(82): Zend\ServiceManager\AbstractPluginManager->get('Hal', NULL, true)

16 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractController.php(285): Zend\Mvc\Controller\PluginManager->get('Hal', NULL)

17 /var/www/manager/stage/dist/vendor/zfcampus/zf-rest/src/RestController.php(468): Zend\Mvc\Controller\AbstractController->plugin('Hal')

18 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractRestfulController.php(368): ZF\Rest\RestController->getList()

19 /var/www/manager/stage/dist/vendor/zfcampus/zf-rest/src/RestController.php(276): Zend\Mvc\Controller\AbstractRestfulController->onDispatch(Object(Zend\Mvc\MvcEvent))

20 [internal function]: ZF\Rest\RestController->onDispatch(Object(Zend\Mvc\MvcEvent))

21 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(468): call_user_func(Array, Object(Zend\Mvc\MvcEvent))

22 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(207): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))

23 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractController.php(117): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))

24 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractRestfulController.php(300): Zend\Mvc\Controller\AbstractController->dispatch(Object(ZF\ContentNegotiation\Request), Object(Zend\Http\PhpEnvironment\Response))

25 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/Mvc/DispatchListener.php(114): Zend\Mvc\Controller\AbstractRestfulController->dispatch(Object(ZF\ContentNegotiation\Request), Object(Zend\Http\PhpEnvironment\Response))

26 [internal function]: Zend\Mvc\DispatchListener->onDispatch(Object(Zend\Mvc\MvcEvent))

27 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(468): call_user_func(Array, Object(Zend\Mvc\MvcEvent))

28 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(207): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))

29 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/Mvc/Application.php(313): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))

30 /var/www/manager/stage/dist/public/index.php(24): Zend\Mvc\Application->run()

31 {main}

Zend\ServiceManager\Exception\CircularDependencyFoundException

File: /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:897 Message: Circular dependency for LazyServiceLoader was found for instance Hal Stack trace:

0 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/AbstractPluginManager.php(245): Zend\ServiceManager\ServiceManager->createServiceViaCallback(Array, 'hal', 'Hal')

1 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/AbstractPluginManager.php(205): Zend\ServiceManager\AbstractPluginManager->createServiceViaCallback(Array, 'hal', 'Hal')

2 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php(612): Zend\ServiceManager\AbstractPluginManager->createFromFactory('hal', 'Hal')

3 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php(572): Zend\ServiceManager\ServiceManager->doCreate('Hal', 'hal')

4 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php(504): Zend\ServiceManager\ServiceManager->create(Array)

5 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/AbstractPluginManager.php(103): Zend\ServiceManager\ServiceManager->get('Hal', true)

6 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/PluginManager.php(82): Zend\ServiceManager\AbstractPluginManager->get('Hal', Array, true)

7 /var/www/manager/stage/dist/vendor/zfcampus/zf-hal/src/Factory/HalViewHelperFactory.php(34): Zend\Mvc\Controller\PluginManager->get('Hal')

8 [internal function]: ZF\Hal\Factory\HalViewHelperFactory->createService(Object(Zend\View\HelperPluginManager), 'hal', 'Hal')

9 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php(902): call_user_func(Array, Object(Zend\View\HelperPluginManager), 'hal', 'Hal')

10 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/AbstractPluginManager.php(245): Zend\ServiceManager\ServiceManager->createServiceViaCallback(Array, 'hal', 'Hal')

11 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/AbstractPluginManager.php(205): Zend\ServiceManager\AbstractPluginManager->createServiceViaCallback(Array, 'hal', 'Hal')

12 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php(612): Zend\ServiceManager\AbstractPluginManager->createFromFactory('hal', 'Hal')

13 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php(572): Zend\ServiceManager\ServiceManager->doCreate('Hal', 'hal')

14 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php(504): Zend\ServiceManager\ServiceManager->create(Array)

15 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/AbstractPluginManager.php(103): Zend\ServiceManager\ServiceManager->get('Hal', true)

16 /var/www/manager/stage/dist/vendor/zfcampus/zf-hal/src/Factory/HalControllerPluginFactory.php(23): Zend\ServiceManager\AbstractPluginManager->get('Hal')

17 [internal function]: ZF\Hal\Factory\HalControllerPluginFactory->createService(Object(Zend\Mvc\Controller\PluginManager), 'hal', 'Hal')

18 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php(902): call_user_func(Array, Object(Zend\Mvc\Controller\PluginManager), 'hal', 'Hal')

19 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/AbstractPluginManager.php(245): Zend\ServiceManager\ServiceManager->createServiceViaCallback(Array, 'hal', 'Hal')

20 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/AbstractPluginManager.php(205): Zend\ServiceManager\AbstractPluginManager->createServiceViaCallback(Array, 'hal', 'Hal')

21 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php(612): Zend\ServiceManager\AbstractPluginManager->createFromFactory('hal', 'Hal')

22 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php(572): Zend\ServiceManager\ServiceManager->doCreate('Hal', 'hal')

23 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php(504): Zend\ServiceManager\ServiceManager->create(Array)

24 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/ServiceManager/AbstractPluginManager.php(103): Zend\ServiceManager\ServiceManager->get('Hal', true)

25 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/PluginManager.php(82): Zend\ServiceManager\AbstractPluginManager->get('Hal', NULL, true)

26 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractController.php(285): Zend\Mvc\Controller\PluginManager->get('Hal', NULL)

27 /var/www/manager/stage/dist/vendor/zfcampus/zf-rest/src/RestController.php(468): Zend\Mvc\Controller\AbstractController->plugin('Hal')

28 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractRestfulController.php(368): ZF\Rest\RestController->getList()

29 /var/www/manager/stage/dist/vendor/zfcampus/zf-rest/src/RestController.php(276): Zend\Mvc\Controller\AbstractRestfulController->onDispatch(Object(Zend\Mvc\MvcEvent))

30 [internal function]: ZF\Rest\RestController->onDispatch(Object(Zend\Mvc\MvcEvent))

31 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(468): call_user_func(Array, Object(Zend\Mvc\MvcEvent))

32 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(207): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))

33 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractController.php(117): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))

34 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractRestfulController.php(300): Zend\Mvc\Controller\AbstractController->dispatch(Object(ZF\ContentNegotiation\Request), Object(Zend\Http\PhpEnvironment\Response))

35 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/Mvc/DispatchListener.php(114): Zend\Mvc\Controller\AbstractRestfulController->dispatch(Object(ZF\ContentNegotiation\Request), Object(Zend\Http\PhpEnvironment\Response))

36 [internal function]: Zend\Mvc\DispatchListener->onDispatch(Object(Zend\Mvc\MvcEvent))

37 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(468): call_user_func(Array, Object(Zend\Mvc\MvcEvent))

38 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(207): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))

39 /var/www/manager/stage/dist/vendor/zendframework/zendframework/library/Zend/Mvc/Application.php(313): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))

40 /var/www/manager/stage/dist/public/index.php(24): Zend\Mvc\Application->run()

When I put this line back into the code the error cease to occur. Does I have a problem in the module dependency while loading the application.config?

My current application.config.php file stands as follow:

<?php

return array( 'modules' => array( 'ZendDeveloperTools', 'DoctrineModule', 'DoctrineORMModule', 'ZfcBase', 'ZfcUser', 'ZfcUserDoctrineORM', 'BjyAuthorize', 'BjyProfiler', 'ScnSocialAuth', 'SamUser', 'AcMailer', 'ZF\Apigility', 'ZF\Apigility\Admin', 'ZF\Apigility\Documentation', 'ZF\Apigility\Documentation\Swagger', 'ZF\Apigility\Provider', 'ZF\Apigility\Welcome', 'AssetManager', 'ZF\ApiProblem', 'ZF\MvcAuth', 'ZF\OAuth2', 'ZF\Hal', 'ZF\ContentNegotiation', 'ZF\ContentValidation', 'ZF\Rest', 'ZF\Rpc', 'ZF\Configuration', 'ZF\Versioning', 'ZF\DevelopmentMode', 'EdpModuleLayouts', 'Admin', 'Media', 'Wizard', 'Template', 'Dashboard', 'Instance', 'Model', 'Customer', 'Report', 'Config', 'User', 'API', 'Cache', 'Application' ), 'module_listener_options' => array( 'module_paths' => array( './module', './vendor' ), 'config_glob_paths' => array( 'config/autoload/{,*.}{global,local}.php' ), 'cache_dir' => './data/cache', 'config_cache_enabled' => false, 'config_cache_key' => 'module_config_cache', 'module_map_cache_enabled' => false, 'module_map_cache_key' => 'module_map_cache' ) );