Cakephp检索超出限制的页面
我使用的是cakephp 1.3 paginator,它运行良好,除了以下几点: 如果我有5个页面,通过这种url访问 我会得到最后一页,但如果我访问 我还得到了最后一页。但我不想检索任何值,因为它不是有效页面 我的配置如下:Cakephp检索超出限制的页面,php,cakephp,paginator,Php,Cakephp,Paginator,我使用的是cakephp 1.3 paginator,它运行良好,除了以下几点: 如果我有5个页面,通过这种url访问 我会得到最后一页,但如果我访问 我还得到了最后一页。但我不想检索任何值,因为它不是有效页面 我的配置如下: var $paginate = array( 'Post' => array( 'limit' => 10, 'order' => array('Post.id' => 'de
var $paginate = array(
'Post' => array(
'limit' => 10,
'order' => array('Post.id' => 'desc')
)
);
$posts = $this->paginate('Post');
<不幸的是,它是如何工作的,并且它被埋葬在
// ...
if ($page === 'last' || $page >= $pageCount) {
$options['page'] = $page = $pageCount;
// ...
因此,您几乎只有一个选项,您自己可以使用它来验证当前页面。如果有人对cakephp 1.3的这个问题感兴趣,我将根据@ndm答案解释我的解决方案 场景如下
- Paginate方法工作不好,所以我需要重写它
- 我不想更新cake\controller.php文件,因为当我用最后一个1.3分支(如果发生)更新版本时,我必须重新定义它,问题是我可能会忘记这样做
- 我不想在app_控制器中编写修复程序,因为分页方法太长,代码感觉很嘈杂
if ($page >= $pageCount)
{
return array(); //return empty array, so no rows found.
}
if ($page === 'last') {
$options['page'] = $page = $pageCount;
} elseif (intval($page) < 1) {
$options['page'] = $page = 1;
}
if($page>=$pageCount)
{
return array();//返回空数组,因此找不到行。
}
如果($page=='last'){
$options['page']=$page=$pageCount;
}elseif(intval($page)<1){
$options['page']=$page=1;
}
最后,我使用include帮助AppController找到PagerController:
<?php
include("pager_controller.php");
class AppController extends PagerController
{
.....
}
您是否直接在url中写入页码。因为cakephp分页将只显示页面的确切数量,我正在编写这个数字,用于测试目的,即使这不应该发生,事实是爬虫程序可以找到这种URL,所以我不希望有多个具有相同内容的URL,对于SEO太差的问题,可以通过将分页的max limit属性设置为limit来解决。尝试并检查我无法使用max limit执行此操作,因为我不知道行的总数(除非我执行查询,很明显我不想执行此操作)