一个控制器中的多个分页

时间:2011-06-25 16:21:51

标签: cakephp controller pagination cakephp-1.3

是否有可能在同一个控制器中使用多个$paginate变量?

我的问题是我在链接标记之间有一个hasAndBelongsToMany-Relationship。 我已经定制了分页选项,以便它与habtm一起使用:

public $paginate = array(
'limit' => 25,
'joins' => array(
    array(
        'table' => 'links_tags',
        'type' => 'inner',
        'alias' => 'LinkTag',
        'conditions' => array(
            'Link.id = LinkTag.link_id'
        )
    )
));

它工作正常,但还有另一个应该也是分页的动作。在此操作中,没有可用的标记,因此每个链接都经常显示,因为该链接的links_tags表中有一个条目。

解决此问题的最简单方法是使用第二个$paginate变量,但我没有找到解决方案,我该怎么做。

2 个答案:

答案 0 :(得分:1)

您可以在设置$ paginate变量后以各种方式自定义您的paginate方法,例如Cake Cookbook中的示例:

function list_recipes() {
    $this->paginate = array(
        'conditions' => array('Recipe.title LIKE' => 'a%'),
        'limit' => 10
    );
    $data = $this->paginate('Recipe');
    $this->set(compact('data'));
);

我还没有对它进行过测试,但我认为你可以在$ this-> paginate调用而不是$ paginate变量中放置像你的join这样的东西,这需要在一个动作之间变化。 。嗯,我必须看看这是否有效 - 对我来说非常有用,知道如何做这种事情,以备日后使用!

答案 1 :(得分:1)

根据Cake Book分页页面(HERE),您可以为不同的模型设置不同的分页变量(都在同一个控制器中):

  

实际上,您可以定义多个   一组分页默认值   控制器,你只需要命名   您想要的模型之后的数组   配置:

class RecipesController extends AppController {
    var $paginate = array(
        'Recipe' => array (...),
        'Author' => array (...)
    );
}