From 3988a5b384c76bf919803ee3d6fecac7070cbfd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Frank=20Bru=CC=88ckner?= Date: Fri, 10 Mar 2017 18:14:03 +0100 Subject: [PATCH 1/2] Added fallback for navigation container names in view helpers - calling the navigation helper with a parameter `navigation` is confusing - name corresponds to the documentation --- src/Helper/Navigation/AbstractHelper.php | 15 ++++++++++ test/Helper/Navigation/AbstractHelperTest.php | 28 +++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/src/Helper/Navigation/AbstractHelper.php b/src/Helper/Navigation/AbstractHelper.php index f8388a2a..2d84f524 100644 --- a/src/Helper/Navigation/AbstractHelper.php +++ b/src/Helper/Navigation/AbstractHelper.php @@ -251,6 +251,21 @@ protected function parseContainer(&$container = null) )); } + // Fallback + if (in_array($container, ['default', 'navigation'], true)) { + // Uses class name + if ($services->has(Navigation\Navigation::class)) { + $container = $services->get(Navigation\Navigation::class); + return; + } + + // Uses old service name + if ($services->has('navigation')) { + $container = $services->get('navigation'); + return; + } + } + /** * Load the navigation container from the root service locator */ diff --git a/test/Helper/Navigation/AbstractHelperTest.php b/test/Helper/Navigation/AbstractHelperTest.php index 37262a74..434dac3e 100644 --- a/test/Helper/Navigation/AbstractHelperTest.php +++ b/test/Helper/Navigation/AbstractHelperTest.php @@ -9,6 +9,9 @@ namespace ZendTest\View\Helper\Navigation; +use Zend\Navigation\Navigation; +use Zend\ServiceManager\ServiceManager; + class AbstractHelperTest extends AbstractTest { /** @@ -81,4 +84,29 @@ public function testEventManagerIsNullByDefault() { $this->assertNull($this->_helper->getEventManager()); } + + public function testFallBackForContainerNames() + { + // Register navigation service with name equal to the documentation + $this->serviceManager->setAllowOverride(true); + $this->serviceManager->setService( + 'navigation', + $this->serviceManager->get('Navigation') + ); + $this->serviceManager->setAllowOverride(false); + + $this->_helper->setServiceLocator($this->serviceManager); + + $this->_helper->setContainer('navigation'); + $this->assertInstanceOf( + Navigation::class, + $this->_helper->getContainer() + ); + + $this->_helper->setContainer('default'); + $this->assertInstanceOf( + Navigation::class, + $this->_helper->getContainer() + ); + } } From eeb150658fe00ff8311b357c110bb202f07b9a8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Frank=20Bru=CC=88ckner?= Date: Fri, 10 Mar 2017 18:14:31 +0100 Subject: [PATCH 2/2] Added missing class name in DocBlock --- test/Helper/Navigation/AbstractTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Helper/Navigation/AbstractTest.php b/test/Helper/Navigation/AbstractTest.php index aea7f5de..ea533cdb 100644 --- a/test/Helper/Navigation/AbstractTest.php +++ b/test/Helper/Navigation/AbstractTest.php @@ -30,7 +30,7 @@ abstract class AbstractTest extends \PHPUnit_Framework_TestCase { /** - * @var + * @var ServiceManager */ protected $serviceManager;