Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Fix prefix = false in connect()

Connecting routes with a prefix = false created an un-matchable route.
Ignore falsey prefix values when setting up prefixes.

Fixes #2479
  • Loading branch information...
commit c81fe6249d2dcb1604f22f56237c809ebdef1397 1 parent 3a3d89d
@markstory markstory authored
View
6 lib/Cake/Routing/Router.php
@@ -233,7 +233,11 @@ public static function getNamedExpressions() {
public static function connect($route, $defaults = array(), $options = array()) {
foreach (self::$_prefixes as $prefix) {
if (isset($defaults[$prefix])) {
- $defaults['prefix'] = $prefix;
+ if ($defaults[$prefix]) {
+ $defaults['prefix'] = $prefix;
+ } else {
+ unset($defaults[$prefix]);
+ }
break;
}
}
View
22 lib/Cake/Test/Case/Routing/RouterTest.php
@@ -1699,6 +1699,27 @@ public function testPrefixOverride() {
}
/**
+ * Test that setting a prefix to false is ignored, as its generally user error.
+ *
+ * @return void
+ */
+ public function testPrefixFalseIgnored() {
+ Configure::write('Routing.prefixes', array('admin'));
+ Router::connect('/cache_css/*', array('admin' => false, 'controller' => 'asset_compress', 'action' => 'get'));
+
+ $url = Router::url(array('controller' => 'asset_compress', 'action' => 'get', 'test'));
+ $expected = '/cache_css/test';
+ $this->assertEquals($expected, $url);
+
+ $url = Router::url(array('admin' => false, 'controller' => 'asset_compress', 'action' => 'get', 'test'));
+ $expected = '/cache_css/test';
+ $this->assertEquals($expected, $url);
+
+ $url = Router::url(array('admin' => true, 'controller' => 'asset_compress', 'action' => 'get', 'test'));
+ $this->assertEquals('/admin/asset_compress/get/test', $url);
+ }
+
+/**
* testRemoveBase method
*
* @return void
@@ -2474,5 +2495,4 @@ public function testRouteRedirection() {
Router::parse('/not-a-match');
$this->assertEquals(Router::$routes[0]->response->header(), array());
}
-
}
Please sign in to comment.
Something went wrong with that request. Please try again.