From 57a5e26e312e601ec482e8f01551a91ff2e3dd8a Mon Sep 17 00:00:00 2001 From: Robert Boloc Date: Thu, 4 Apr 2013 17:15:04 +0200 Subject: [PATCH] Fix for console router not accepting controller word as part of a route --- library/Zend/Mvc/Router/Console/Simple.php | 2 +- tests/ZendTest/Mvc/Router/Console/SimpleTest.php | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/library/Zend/Mvc/Router/Console/Simple.php b/library/Zend/Mvc/Router/Console/Simple.php index 988e4cd9788..ffad1848b08 100644 --- a/library/Zend/Mvc/Router/Console/Simple.php +++ b/library/Zend/Mvc/Router/Console/Simple.php @@ -797,7 +797,7 @@ public function match(Request $request, $pathOffset = null) return null; // there are extraneous params that were not consumed } - return new RouteMatch(array_merge($this->defaults, $matches)); + return new RouteMatch(array_replace($matches, $this->defaults)); } /** diff --git a/tests/ZendTest/Mvc/Router/Console/SimpleTest.php b/tests/ZendTest/Mvc/Router/Console/SimpleTest.php index c30c1ce49d8..0527bee7fd4 100644 --- a/tests/ZendTest/Mvc/Router/Console/SimpleTest.php +++ b/tests/ZendTest/Mvc/Router/Console/SimpleTest.php @@ -695,4 +695,18 @@ public function testFactory() ) ); } + + public function testMatchMergeOfTheDefaults() + { + $defaults = array( + 'controller' => 'Controller/Test', + ); + + $request = new ConsoleRequest(array('scriptname.php', 'foo', 'controller')); + $route = new Simple('foo controller', array(), $defaults); + $match = $route->match($request); + + $this->assertInstanceOf('Zend\Mvc\Router\Console\RouteMatch', $match); + $this->assertEquals($defaults['controller'], $match->getParam('controller')); + } }