Browse Source

Fix deprecated property usage in routing.

Mark Story 8 years ago
parent
commit
54cd172c60

+ 4 - 3
src/Controller/Component/RequestHandlerComponent.php

@@ -201,9 +201,10 @@ class RequestHandlerComponent extends Component
             $this->_setExtension($request, $response);
         }
 
-        $request->params['isAjax'] = $request->is('ajax');
+        $isAjax = $request->is('ajax');
+        $controller->request = $request->withParam('isAjax', $isAjax);
 
-        if (!$this->ext && $request->is('ajax')) {
+        if (!$this->ext && $isAjax) {
             $this->ext = 'ajax';
         }
 
@@ -217,7 +218,7 @@ class RequestHandlerComponent extends Component
             }
             if ($this->requestedWith($type)) {
                 $input = $request->input(...$handler);
-                $request->data = (array)$input;
+                $controller->request = $request->withParsedBody((array)$input);
             }
         }
     }

+ 2 - 2
src/Routing/Filter/AssetFilter.php

@@ -69,7 +69,7 @@ class AssetFilter extends DispatcherFilter
         /* @var \Cake\Http\ServerRequest $request */
         $request = $event->getData('request');
 
-        $url = urldecode($request->url);
+        $url = urldecode($request->getUri()->getPath());
         if (strpos($url, '..') !== false || strpos($url, '.') === false) {
             return null;
         }
@@ -101,7 +101,7 @@ class AssetFilter extends DispatcherFilter
      */
     protected function _getAssetFile($url)
     {
-        $parts = explode('/', $url);
+        $parts = explode('/', ltrim($url, '/'));
         $pluginPart = [];
         for ($i = 0; $i < 2; $i++) {
             if (!isset($parts[$i])) {

+ 9 - 6
src/Routing/Router.php

@@ -620,8 +620,8 @@ class Router
         // In 4.x this should be replaced with state injected via setRequestContext
         $request = static::getRequest(true);
         if ($request) {
-            $params = $request->params;
-            $here = $request->here;
+            $params = $request->getAttribute('params');
+            $here = $request->getRequestTarget();
             $base = $request->getAttribute('base');
         } else {
             $base = Configure::read('App.base');
@@ -750,8 +750,8 @@ class Router
     {
         $url = [];
         if ($params instanceof ServerRequest) {
-            $url = $params->query;
-            $params = $params->params;
+            $url = $params->getQueryParams();
+            $params = $params->getAttribute('params');
         } elseif (isset($params['url'])) {
             $url = $params['url'];
         }
@@ -820,8 +820,11 @@ class Router
         }
         $request = static::getRequest();
 
-        if (!empty($request->base) && stristr($url, $request->base)) {
-            $url = preg_replace('/^' . preg_quote($request->base, '/') . '/', '', $url, 1);
+        if ($request) {
+            $base = $request->getAttribute('base');
+            if (strlen($base) && stristr($url, $base)) {
+                $url = preg_replace('/^' . preg_quote($base, '/') . '/', '', $url, 1);
+            }
         }
         $url = '/' . $url;
 

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

@@ -512,16 +512,14 @@ class RouterTest extends TestCase
         $result = Router::normalize('/recipe/recipes/add');
         $this->assertEquals('/recipe/recipes/add', $result);
 
-        $request = new ServerRequest();
-        $request->base = '/us';
+        $request = new ServerRequest(['base' => '/us']);
         Router::setRequestInfo($request);
         $result = Router::normalize('/us/users/logout/');
         $this->assertEquals('/users/logout', $result);
 
         Router::reload();
 
-        $request = new ServerRequest();
-        $request->base = '/cake_12';
+        $request = new ServerRequest(['base' => '/cake_12']);
         Router::setRequestInfo($request);
         $result = Router::normalize('/cake_12/users/logout/');
         $this->assertEquals('/users/logout', $result);
@@ -531,15 +529,13 @@ class RouterTest extends TestCase
         Configure::write('App.fullBaseUrl', '/');
 
         $request = new ServerRequest();
-        $request->base = '/';
         Router::setRequestInfo($request);
         $result = Router::normalize('users/login');
         $this->assertEquals('/users/login', $result);
         Configure::write('App.fullBaseUrl', $_back);
 
         Router::reload();
-        $request = new ServerRequest();
-        $request->base = 'beer';
+        $request = new ServerRequest(['base' => 'beer']);
         Router::setRequestInfo($request);
         $result = Router::normalize('beer/admin/beers_tags/add');
         $this->assertEquals('/admin/beers_tags/add', $result);
@@ -562,7 +558,7 @@ class RouterTest extends TestCase
                 'plugin' => null,
                 'controller' => 'subscribe',
             ],
-            'here' => '/magazine/',
+            'url' => '/magazine/',
             'base' => '/magazine',
             'webroot' => '/magazine/'
         ]);