Browse Source

Adding support for a trailing & or & in the existing queryString

Jelle Henkens 14 years ago
parent
commit
07735069fa
2 changed files with 9 additions and 1 deletions
  1. 1 1
      lib/Cake/Routing/Router.php
  2. 8 0
      lib/Cake/Test/Case/Routing/RouterTest.php

+ 1 - 1
lib/Cake/Routing/Router.php

@@ -964,7 +964,7 @@ class Router {
 		}
 		$addition = http_build_query($q, null, $join);
 
-		if ($out && $addition) {
+		if ($out && $addition && substr($out, strlen($join) * -1, strlen($join)) != $join) {
 			$out .= $join;
 		}
 

+ 8 - 0
lib/Cake/Test/Case/Routing/RouterTest.php

@@ -2626,5 +2626,13 @@ class RouterTest extends CakeTestCase {
 		$result = Router::queryString('foo=bar', array('php' => 'nut', 'jose' => 'zap'), true);
 		$expected = '?foo=bar&php=nut&jose=zap';
 		$this->assertEquals($expected, $result);
+
+		$result = Router::queryString('foo=bar&', array('php' => 'nut', 'jose' => 'zap'), true);
+		$expected = '?foo=bar&php=nut&jose=zap';
+		$this->assertEquals($expected, $result);
+
+		$result = Router::queryString('foo=bar&', array('php' => 'nut', 'jose' => 'zap'));
+		$expected = '?foo=bar&php=nut&jose=zap';
+		$this->assertEquals($expected, $result);
 	}
 }