From 31033239bd06750358a8aea3542392209234278a Mon Sep 17 00:00:00 2001 From: mark_story Date: Mon, 2 Jul 2012 23:34:37 -0400 Subject: [PATCH] Add missing urlencoding to nested named parameters. Fixes #2988 --- lib/Cake/Routing/Route/CakeRoute.php | 4 ++-- lib/Cake/Test/Case/Routing/Route/CakeRouteTest.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/Cake/Routing/Route/CakeRoute.php b/lib/Cake/Routing/Route/CakeRoute.php index b3121de3998..8fab212cf57 100644 --- a/lib/Cake/Routing/Route/CakeRoute.php +++ b/lib/Cake/Routing/Route/CakeRoute.php @@ -497,9 +497,9 @@ protected function _writeUrl($params) { $named = array(); foreach ($params['named'] as $key => $value) { if (is_array($value)) { - $flat = Hash::flatten($value, ']['); + $flat = Hash::flatten($value, '%5D%5B'); foreach ($flat as $namedKey => $namedValue) { - $named[] = $key . "[$namedKey]" . $separator . rawurlencode($namedValue); + $named[] = $key . "%5B{$namedKey}%5D" . $separator . rawurlencode($namedValue); } } else { $named[] = $key . $separator . rawurlencode($value); diff --git a/lib/Cake/Test/Case/Routing/Route/CakeRouteTest.php b/lib/Cake/Test/Case/Routing/Route/CakeRouteTest.php index 01799363f63..c393dc27c65 100644 --- a/lib/Cake/Test/Case/Routing/Route/CakeRouteTest.php +++ b/lib/Cake/Test/Case/Routing/Route/CakeRouteTest.php @@ -798,7 +798,7 @@ public function testMatchNamedParametersArray() { ) ); $result = $route->match($url); - $expected = '/posts/index/filter[0]:one/filter[model]:value'; + $expected = '/posts/index/filter%5B0%5D:one/filter%5Bmodel%5D:value'; $this->assertEquals($expected, $result); $url = array( @@ -813,7 +813,7 @@ public function testMatchNamedParametersArray() { ) ); $result = $route->match($url); - $expected = '/posts/index/filter[0]:one/filter[model][0]:two/filter[model][order]:field'; + $expected = '/posts/index/filter%5B0%5D:one/filter%5Bmodel%5D%5B0%5D:two/filter%5Bmodel%5D%5Border%5D:field'; $this->assertEquals($expected, $result); }