diff --git a/src/View/Helper/SearchHelper.php b/src/View/Helper/SearchHelper.php index 27ba55d5..0d9733a5 100644 --- a/src/View/Helper/SearchHelper.php +++ b/src/View/Helper/SearchHelper.php @@ -3,6 +3,7 @@ namespace Search\View\Helper; +use Cake\Datasource\Paging\PaginatedInterface; use Cake\View\Helper; use Cake\View\View; use function Cake\I18n\__d; @@ -34,15 +35,18 @@ class SearchHelper extends Helper ]; /** - * Checks for pagination and if so, blacklist limit and page params. + * Checks for paginated resultset and if so, blacklist the `page` param. * * @param \Cake\View\View $View View * @param array $config Config */ public function __construct(View $View, array $config) { - if ($View->getRequest()->getParam('paging')) { - $this->_defaultConfig['additionalBlacklist'][] = 'page'; + foreach ($View->getVars() as $name) { + if ($View->get($name) instanceof PaginatedInterface) { + $this->_defaultConfig['additionalBlacklist'][] = 'page'; + break; + } } parent::__construct($View, $config); diff --git a/tests/TestCase/View/Helper/SearchHelperTest.php b/tests/TestCase/View/Helper/SearchHelperTest.php index b8b11366..80d3e2b3 100644 --- a/tests/TestCase/View/Helper/SearchHelperTest.php +++ b/tests/TestCase/View/Helper/SearchHelperTest.php @@ -3,6 +3,7 @@ namespace Search\Test\View\Helper; +use Cake\Datasource\Paging\PaginatedInterface; use Cake\Http\ServerRequest; use Cake\Routing\RouteBuilder; use Cake\Routing\Router; @@ -128,9 +129,12 @@ public function testResetUrlWithPaginator() $request = new ServerRequest([ 'url' => '/controller/action?page=2&limit=5&sort=x&direction=asc&foo=bar', ]); - $request = $request->withParam('paging', ['Something']); $this->view = new View($request); + + $paginatedResult = $this->createMock(PaginatedInterface::class); + $this->view->set('results', $paginatedResult); + $this->searchHelper = new SearchHelper($this->view, []); $params = [ @@ -157,9 +161,12 @@ public function testResetUrlWithPaginatorAndAdditionalBlacklist() $request = new ServerRequest([ 'url' => '/controller/action?page=2&limit=5&sort=x&direction=asc&foo=bar', ]); - $request = $request->withParam('paging', ['Something']); $this->view = new View($request); + + $paginatedResult = $this->createMock(PaginatedInterface::class); + $this->view->set('results', $paginatedResult); + $config = [ 'additionalBlacklist' => [ 'sort',