Browse Source

Show warning for removed feature.

Passing query options as paginator setting is no longer supported.
ADmad 2 years ago
parent
commit
be2b142a62

+ 12 - 0
src/Datasource/Paging/NumericPaginator.php

@@ -22,6 +22,7 @@ use Cake\Datasource\Paging\Exception\PageOutOfBoundsException;
 use Cake\Datasource\QueryInterface;
 use Cake\Datasource\RepositoryInterface;
 use Cake\Datasource\ResultSetInterface;
+use function Cake\Core\triggerWarning;
 
 /**
  * This class is used to handle automatic model data pagination.
@@ -317,6 +318,17 @@ class NumericPaginator implements PaginatorInterface
         $alias = $object->getAlias();
         $defaults = $this->getDefaults($alias, $settings);
 
+        $validSettings = array_keys($this->_defaultConfig);
+        $validSettings[] = 'order';
+        $extraSettings = array_diff_key($defaults, array_flip($validSettings));
+        if ($extraSettings) {
+            triggerWarning(
+                'Passing query options as paginator settings is no longer supported.'
+                . ' Use a custom finder through the `finder` config or pass a SelectQuery instance to paginate().'
+                . ' Extra keys found are: ' . implode(',', array_keys($extraSettings))
+            );
+        }
+
         $options = $this->mergeOptions($params, $defaults);
         $options = $this->validateSort($object, $options);
         $options = $this->checkLimit($options);

+ 11 - 0
tests/TestCase/Datasource/Paging/NumericPaginatorTest.php

@@ -163,4 +163,15 @@ class NumericPaginatorTest extends TestCase
 
         $this->Paginator->paginate($table, ['sort' => 'title'], $settings);
     }
+
+    public function testDeprecationWarningForExtraSettings(): void
+    {
+        $this->expectWarningMessageMatches(
+            '/Passing query options as paginator settings is no longer supported/',
+            function () {
+                $table = $this->getTableLocator()->get('PaginatorPosts');
+                $this->Paginator->paginate($table, [], ['fields' => ['title']]);
+            }
+        );
+    }
 }