diff --git a/cake/libs/router.php b/cake/libs/router.php index c5042c9ea0d..985cc587968 100644 --- a/cake/libs/router.php +++ b/cake/libs/router.php @@ -186,7 +186,7 @@ function __setPrefixes() { $this->__prefixes[] = $this->__admin = $routing['admin']; } if (isset($routing['prefixes'])) { - $this->__prefixes = array_merge($this->__prefixes, $routing['prefixes']); + $this->__prefixes = array_merge($this->__prefixes, (array)$routing['prefixes']); } } /** diff --git a/cake/tests/cases/libs/router.test.php b/cake/tests/cases/libs/router.test.php index b2d36e88ef5..d183aed714b 100644 --- a/cake/tests/cases/libs/router.test.php +++ b/cake/tests/cases/libs/router.test.php @@ -1017,6 +1017,31 @@ function testRouteSymmetry() { $this->assertEqual($result, $expected); } +/** + * Test that Routing.prefixes and Routing.admin are used when a Router instance is created + * or reset + * + * @return void + **/ + function testRoutingPrefixesSetting() { + $restore = Configure::read('Routing'); + + Configure::write('Routing.admin', 'admin'); + Configure::write('Routing.prefixes', array('member', 'super_user')); + Router::reload(); + $result = Router::prefixes(); + $expected = array('admin', 'member', 'super_user'); + $this->assertEqual($result, $expected); + + Configure::write('Routing.prefixes', 'member'); + Router::reload(); + $result = Router::prefixes(); + $expected = array('admin', 'member'); + $this->assertEqual($result, $expected); + + Configure::write('Routing', $restore); + } + /** * testAdminRouting method *