Browse Source

Merge pull request #16883 from swiffer/patch-1

allow setting sortDefault & directionDefault when order contains mult…
Mark Story 3 years ago
parent
commit
cdd05af031

+ 2 - 2
src/Datasource/Paging/NumericPaginator.php

@@ -363,7 +363,7 @@ class NumericPaginator implements PaginatorInterface
         $order = (array)$data['options']['order'];
         $sortDefault = $directionDefault = false;
 
-        if (!empty($defaults['order']) && count($defaults['order']) === 1) {
+        if (!empty($defaults['order']) && count($defaults['order']) >= 1) {
             $sortDefault = key($defaults['order']);
             $directionDefault = current($defaults['order']);
         }
@@ -582,7 +582,7 @@ class NumericPaginator implements PaginatorInterface
 
         if (
             $options['sort'] === null
-            && count($options['order']) === 1
+            && count($options['order']) >= 1
             && !is_numeric(key($options['order']))
         ) {
             $options['sort'] = key($options['order']);

+ 3 - 4
tests/TestCase/Datasource/Paging/PaginatorTestTrait.php

@@ -221,15 +221,14 @@ trait PaginatorTestTrait
                 'whitelist' => ['limit', 'sort', 'page', 'direction'],
                 'allowedParameters' => ['limit', 'sort', 'page', 'direction'],
                 'scope' => null,
-                'sort' => null,
+                'sort' => 'PaginatorPosts.id',
             ]);
 
         $this->Paginator->paginate($table, [], $settings);
 
         $pagingParams = $this->Paginator->getPagingParams();
-        $this->assertNull($pagingParams['PaginatorPosts']['direction']);
-        $this->assertFalse($pagingParams['PaginatorPosts']['sortDefault']);
-        $this->assertFalse($pagingParams['PaginatorPosts']['directionDefault']);
+        $this->assertEquals('PaginatorPosts.id', $pagingParams['PaginatorPosts']['sortDefault']);
+        $this->assertEquals('DESC', $pagingParams['PaginatorPosts']['directionDefault']);
     }
 
     /**