首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CakePHP分页最后一页永不结束

CakePHP分页最后一页永不结束
EN

Stack Overflow用户
提问于 2013-04-30 18:14:00
回答 2查看 789关注 0票数 0

我对Cake (1.3)分页限制器有一个问题,下面是代码:

代码语言:javascript
运行
复制
$page = (!empty($this->params['form']['page'])) ? $this->params['form']['page'] : 1 ;

# Consulta        
$this->paginate = array('limit' => $limit, 'page' => 555, 'order' => array('Candidate.id' => 'ASC'), 'conditions' => $conditions);
$data = $this->paginate('Candidate');

当我发送页面时,第1,2,3行,等等。运行正常,但是如果结果有6页,并且我发送了第7页、第8页或第999999页的查询返回给我第6页,对吗?

我认为查询发送给我的是一个空数组,而不是最后一个无限大的页面。

当页面不存在时,有什么方法可以强制不发送任何内容吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-30 18:23:48

这就是CakePHP分页的工作方式。

如果您想要不同的行为,您必须在控制器操作中捕获$this->params['named']['page'];值,并确定它是否是一个无效的数字,然后返回您想要的空页,而不是允许CakePHP使用其缺省值

例如

代码语言:javascript
运行
复制
public function index() {

    $maxPage = 6; // need to calculate the max page value somehow

    if ($this->params['named']['page'] > $maxPage) {
        $rows = array();
    } else {
        $rows = $this->paginate('Model');
    }

    $this->set('rows', $rows);
}
票数 1
EN

Stack Overflow用户

发布于 2013-04-30 18:28:18

在CakePHP 1.3中,这是默认行为。这只在CakePHP 2.3中发生了变化,因为mentions这本书

从2.3开始,当尝试访问不存在的页面时,PaginatorComponent将抛出NotFoundException,即请求的页数大于总页数。

因此,您可以让正常的错误页面呈现,也可以使用try catch块并在捕获到NotFoundException时采取适当的操作。

如果您确实不希望不存在的页面显示任何内容,则可以随时向控制器添加一些自定义代码,以呈现错误页面。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16297412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档