Cakephp - 从当前页面的下一页获取项目?

时间:2015-08-07 21:22:12

标签: php cakephp pagination

我目前正在使用cakephp开发一个图库系统。在其中,我们对每个图像专辑进行了分页,因此每个页面最多包含一定数量的图像。我通过使用:

达到了这个目标
$this->paginate = array(
    'conditions' => array(
        'Item.album_id' => $id
    ),
    'order' => array(
        'Item.added' => 'desc'
    ),
    'limit' => '50'
);

在我的视图控制器上。有了这个,我可以毫无问题地显示每页上的所有项目。

然而,我现在面临一个问题:我需要在当前页面中的所有项目之后显示一个指向下一页的按钮。这不是问题,除了通过设计设置按下NEXT PAGE的按钮应该有下一页的项目作为其背景。

我环顾四周,试图想办法从cakephp中的分页系统的下一页中拉出一个项目而没有运气。有没有人这样做过,或者有人知道如何去做?

2 个答案:

答案 0 :(得分:1)

您必须在当前页面中手动查询预览图像。 要访问页码,您可以在操作中使用$this->params。然后你必须用'限制'来查询图像。和'页' documentation中提到的参数。 之后设置图像URL如下:

$this->set('preview_image_url', $queried_url);

然后在视图中使用内联样式设置下一个按钮的背景。

答案 1 :(得分:0)

在Alto的帮助下,我最终做到了这一点(把它放在这里以防万一有人想知道我是怎么做的):

$CurrPage = $this->params['paging']['Item']['page'];

$NextParams = array(
    'limit' => 1,
    //'page' => $CurrPage + 1,
    'order' => array(
        'Item.added' => 'desc'
    ),
    'offset' => $CurrPage*50
    //'order' =>('rand()')
);
$NextImage = $this->Item->find('first', $NextParams);

$this->set('NextImage', $NextImage);

这给了我下一页的第一项,这对我来说已经足够了。请注意评论'order' =>('rand()') - 我试图从下一页抓取一个随机项目,但是,唉,似乎Cake首先争抢所有项目然后分页。可能有一种方法可以解决这个问题,但是现在这个问题已经解决了。

此外,使用'page' => $CurrPage + 1似乎不起作用,系统改为返回一个看似随机选择的图像。这就是我违反使用'offset' => $CurrPage*50的原因,其中50是我每页显示的项目数量。