Browse Source

Always use "?" to specify query string params in URL array.

ADmad 7 years ago
parent
commit
77dd7e8274

+ 0 - 6
src/Routing/Route/Route.php

@@ -694,12 +694,6 @@ class Route
                 unset($url[$key]);
                 continue;
             }
-
-            // keys that don't exist are different.
-            if (!$defaultExists && ($value !== null && $value !== false && $value !== '')) {
-                $query[$key] = $value;
-                unset($url[$key]);
-            }
         }
 
         // if not a greedy route, no extra params are allowed.

+ 1 - 1
tests/TestCase/Routing/Route/DashedRouteTest.php

@@ -62,7 +62,7 @@ class DashedRouteTest extends TestCase
         $result = $route->match(['controller' => 'Posts', 'action' => 'myView']);
         $this->assertEquals('/blog/my-view', $result);
 
-        $result = $route->match(['controller' => 'Posts', 'action' => 'myView', 'id' => 2]);
+        $result = $route->match(['controller' => 'Posts', 'action' => 'myView', '?' => ['id' => 2]]);
         $this->assertEquals('/blog/my-view?id=2', $result);
 
         $result = $route->match(['controller' => 'Posts', 'action' => 'myView', 1]);

+ 1 - 1
tests/TestCase/Routing/Route/InflectedRouteTest.php

@@ -62,7 +62,7 @@ class InflectedRouteTest extends TestCase
         $result = $route->match(['controller' => 'Posts', 'action' => 'my_view']);
         $this->assertEquals('/blog/my_view', $result);
 
-        $result = $route->match(['controller' => 'Posts', 'action' => 'my_view', 'id' => 2]);
+        $result = $route->match(['controller' => 'Posts', 'action' => 'my_view', '?' => ['id' => 2]]);
         $this->assertEquals('/blog/my_view?id=2', $result);
 
         $result = $route->match(['controller' => 'Posts', 'action' => 'my_view', 1]);

+ 1 - 1
tests/TestCase/Routing/Route/RedirectRouteTest.php

@@ -216,7 +216,7 @@ class RedirectRouteTest extends TestCase
     public function testParsePersistPatterns()
     {
         $this->expectException(\Cake\Routing\Exception\RedirectException::class);
-        $this->expectExceptionMessage('http://localhost/tags/add?lang=nl');
+        $this->expectExceptionMessage('http://localhost/tags/add');
         $this->expectExceptionCode(301);
         $route = new RedirectRoute('/:lang/my_controllers', ['controller' => 'tags', 'action' => 'add'], ['lang' => '(nl|en)', 'persist' => ['lang']]);
         $route->parse('/nl/my_controllers/');

+ 11 - 10
tests/TestCase/Routing/Route/RouteTest.php

@@ -258,7 +258,7 @@ class RouteTest extends TestCase
             'action' => 'move',
             'id' => '123',
             'x' => '8',
-            'y' => '9',
+            '?' => ['y' => '9'],
         ]);
         $this->assertEquals('/fighters/123/move/8/:y?y=9', $result);
     }
@@ -603,7 +603,7 @@ class RouteTest extends TestCase
         $result = $route->match(['controller' => 'posts', 'action' => 'view']);
         $this->assertEquals('/blog/view', $result);
 
-        $result = $route->match(['controller' => 'posts', 'action' => 'view', 'id' => 2]);
+        $result = $route->match(['controller' => 'posts', 'action' => 'view', '?' => ['id' => 2]]);
         $this->assertEquals('/blog/view?id=2', $result);
 
         $result = $route->match(['controller' => 'nodes', 'action' => 'view']);
@@ -914,7 +914,7 @@ class RouteTest extends TestCase
             'action' => 'view',
             1,
             'second',
-            'query' => 'string',
+            '?' => ['query' => 'string'],
         ]);
         $this->assertEquals('/blog/1-second?query=string', $result);
 
@@ -946,7 +946,7 @@ class RouteTest extends TestCase
             'slug' => 'second',
             'third',
             'fourth',
-            'query' => 'string',
+            '?' => ['query' => 'string'],
         ]);
         $this->assertEquals('/blog/1-second/third/fourth?query=string', $result);
 
@@ -957,7 +957,7 @@ class RouteTest extends TestCase
             'second',
             'third',
             'fourth',
-            'query' => 'string',
+            '?' => ['query' => 'string'],
         ]);
         $this->assertEquals('/blog/1-second/third/fourth?query=string', $result);
     }
@@ -998,8 +998,7 @@ class RouteTest extends TestCase
             'action' => 'view',
             1,
             '_ext' => 'json',
-            'id' => 'b',
-            'c' => 'd',
+            '?' => ['id' => 'b', 'c' => 'd',],
         ]);
         $this->assertEquals('/posts/view/1.json?id=b&c=d', $result);
 
@@ -1086,9 +1085,11 @@ class RouteTest extends TestCase
             'controller' => 'posts',
             'action' => 'index',
             0,
-            'test' => 'var',
-            'var2' => 'test2',
-            'more' => 'test data',
+            '?' => [
+                'test' => 'var',
+                'var2' => 'test2',
+                'more' => 'test data',
+            ],
         ]);
         $expected = '/posts/index/0?test=var&var2=test2&more=test+data';
         $this->assertEquals($expected, $result);

+ 4 - 23
tests/TestCase/Routing/RouterTest.php

@@ -928,7 +928,7 @@ class RouterTest extends TestCase
             'plugin' => null,
             'controller' => 'articles',
             'action' => 'index',
-            'id' => 'testing',
+            '?' => ['id' => 'testing'],
             '_ext' => 'json',
         ]);
         $expected = '/articles.json?id=testing';
@@ -995,7 +995,7 @@ class RouterTest extends TestCase
 
         $url = Router::url([
             '_name' => 'test', 'name' => 'mark',
-            'page' => 1, 'sort' => 'title', 'dir' => 'desc',
+            '?' => ['page' => 1, 'sort' => 'title', 'dir' => 'desc',],
         ]);
         $this->assertEquals('/users/mark?page=1&sort=title&dir=desc', $url);
 
@@ -2484,12 +2484,12 @@ class RouterTest extends TestCase
             'controller' => 'posts',
             'action' => 'view',
             'pass' => [1],
-            'url' => ['url' => 'eng/posts/view/1', 'foo' => 'bar', 'baz' => 'quu'],
+            'url' => ['url' => 'eng/posts/view/1'],
             'paging' => [],
             'models' => [],
         ];
         $result = Router::reverse($params);
-        $this->assertEquals('/eng/posts/view/1?foo=bar&baz=quu', $result);
+        $this->assertEquals('/eng/posts/view/1', $result);
     }
 
     public function testReverseCakeRequestQuery()
@@ -2946,25 +2946,6 @@ class RouterTest extends TestCase
     }
 
     /**
-     * Test generation of routes with collisions between the query string
-     * and other url params
-     *
-     * @return void
-     */
-    public function testUrlWithCollidingQueryString()
-    {
-        Router::connect('/:controller/:action/:id');
-
-        $query = ['controller' => 'Foo', 'action' => 'bar', 'id' => 100];
-        $result = Router::url(['controller' => 'posts', 'action' => 'view', 'id' => 1, '?' => $query]);
-        $this->assertEquals('/posts/view/1?controller=Foo&action=bar&id=100', $result);
-
-        $query = ['_host' => 'foo.bar', '_ssl' => 0, '_scheme' => 'ftp://', '_base' => 'baz', '_port' => '15'];
-        $result = Router::url(['controller' => 'posts', 'action' => 'view', 'id' => 1, '?' => $query]);
-        $this->assertEquals('/posts/view/1?_host=foo.bar&_ssl=0&_scheme=ftp%3A%2F%2F&_base=baz&_port=15', $result);
-    }
-
-    /**
      * Test setting the request context.
      *
      * @return void