CakePHP 在最后一页输出冗余分页 link
CakePHP outputting redundant pagination link on last page
我在 CakePHP 3.7
中使用自定义 pagination template
模板在config/infinite-scroll-paginator.php
。我想将它与 Infinite Scroll jquery plugin 一起使用。因此,所需要的只是每个分页页面 1 link,其中包含 URL 到 "next" 页面(即下一组结果)。
所以在上面的文件中我有:
$config = [
'nextActive' => '<a class="pagination__next" aria-label="Next" href="{{url}}">{{text}}</a>'
];
在我的控制器中,我首先告诉它使用自定义分页模板:
public $helpers = [
'Paginator' => ['templates' => 'infinite-scroll-paginator']
];
然后当我想对我的数据进行分页时,我使用自定义查找器(findFilters()
位于 Model/Table/FiltersTable.php
中):
public $paginate = [
'finder' => 'filters',
];
然后我可以使用它来获取分页数据:
$this->loadModel('Filters');
$rf_keywords = trim($this->request->getQuery('rf_keywords'));
// Pagination
$page = $this->request->getQuery('page') ? (int)$this->request->getQuery('page') : 1;
$this->paginate = ['page' => $page, 'limit' => 100];
$finder = $this
->Filters
->find('filters', [
'rf_keywords' => $rf_keywords
]);
$data = $this->paginate($finder);
$this->set('data', $data);
然后在我的模板中输出分页器 HTML:
<?= $this->Paginator->next(); ?>
所有这一切都很好。我得到每个页面的 "next" link。假设我有 10 页我得到 URL's:
/get-filters/?page=1
/get-filters/?page=2
...
/get-filters/?page=10
问题是第10页有一个"next"link而它的URL只是
/get-filters
没有更多的页面可以输出,但我仍然得到 link,尽管是无效的。
如何阻止它输出最后一页的link?我认为分页器组件会处理这个问题,因为它知道有多少页是基于我在 $this->paginate
?
中的 limit
值
使用$this->Paginator->hasNext()
哪个returns true or false 取决于是否有"next page".
在模板中:
<?php if ($this->Paginator->hasNext()): ?>
<?= $this->Paginator->next(); ?>
<?php endif; ?>
我在 CakePHP 3.7
中使用自定义 pagination template模板在config/infinite-scroll-paginator.php
。我想将它与 Infinite Scroll jquery plugin 一起使用。因此,所需要的只是每个分页页面 1 link,其中包含 URL 到 "next" 页面(即下一组结果)。
所以在上面的文件中我有:
$config = [
'nextActive' => '<a class="pagination__next" aria-label="Next" href="{{url}}">{{text}}</a>'
];
在我的控制器中,我首先告诉它使用自定义分页模板:
public $helpers = [
'Paginator' => ['templates' => 'infinite-scroll-paginator']
];
然后当我想对我的数据进行分页时,我使用自定义查找器(findFilters()
位于 Model/Table/FiltersTable.php
中):
public $paginate = [
'finder' => 'filters',
];
然后我可以使用它来获取分页数据:
$this->loadModel('Filters');
$rf_keywords = trim($this->request->getQuery('rf_keywords'));
// Pagination
$page = $this->request->getQuery('page') ? (int)$this->request->getQuery('page') : 1;
$this->paginate = ['page' => $page, 'limit' => 100];
$finder = $this
->Filters
->find('filters', [
'rf_keywords' => $rf_keywords
]);
$data = $this->paginate($finder);
$this->set('data', $data);
然后在我的模板中输出分页器 HTML:
<?= $this->Paginator->next(); ?>
所有这一切都很好。我得到每个页面的 "next" link。假设我有 10 页我得到 URL's:
/get-filters/?page=1
/get-filters/?page=2
...
/get-filters/?page=10
问题是第10页有一个"next"link而它的URL只是
/get-filters
没有更多的页面可以输出,但我仍然得到 link,尽管是无效的。
如何阻止它输出最后一页的link?我认为分页器组件会处理这个问题,因为它知道有多少页是基于我在 $this->paginate
?
limit
值
使用$this->Paginator->hasNext()
哪个returns true or false 取决于是否有"next page".
在模板中:
<?php if ($this->Paginator->hasNext()): ?>
<?= $this->Paginator->next(); ?>
<?php endif; ?>