From 07735069fad116d205fd97cb539f7b6241a1e6ce Mon Sep 17 00:00:00 2001 From: Jelle Henkens Date: Wed, 9 May 2012 22:32:57 +0100 Subject: [PATCH] Adding support for a trailing & or & in the existing queryString --- lib/Cake/Routing/Router.php | 2 +- lib/Cake/Test/Case/Routing/RouterTest.php | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/Cake/Routing/Router.php b/lib/Cake/Routing/Router.php index 081a44812..7015ece0a 100644 --- a/lib/Cake/Routing/Router.php +++ b/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; } diff --git a/lib/Cake/Test/Case/Routing/RouterTest.php b/lib/Cake/Test/Case/Routing/RouterTest.php index 6d75fc831..67bcea886 100644 --- a/lib/Cake/Test/Case/Routing/RouterTest.php +++ b/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); } }