代码之家  ›  专栏  ›  技术社区  ›  dclowd9901

如何在CakePHP中为单个模型/控制器创建多个分页实例

  •  0
  • dclowd9901  · 技术社区  · 14 年前

    提前谢谢你的帮助。

    到目前为止我试过的

    基本上是试图设置特定于每个操作的限制,而不是初始分页帮助器:

    var $paginate = array('order'=>array('Category.name'), 'limit'=>'8');

    这就是助手的样子,不管限制是什么,它都会提供信息。即使我取消了这一限制并尝试这样应用:

    var $paginate = array('order'=>array('Item.name'));
    
    function discover_list(){    
        $this->set('d_ajax_items', $this->paginate('Item', array('Item.discover_order' => null, 'Item.moderated' => 1), null, 'Item.id DESC', null, 8));
    }
    
    function trend_paging(){
        $this->set('trend_items', $this->paginate('Item', array('Item.moderated' => 1),NULL,  'rank DESC', NULL, 12));  
    }
    

    3 回复  |  直到 14 年前
        1
  •  3
  •   Mauro Zadunaisky    14 年前

    我误解了你原来的问题。如果要对每个操作设置不同的限制,可以这样做

    function discover_list() {    
        $this->paginate['limit'] = 8;
        $this->paginate['conditions'] = array('Item.discover_order' => null, 'Item.moderated' => 1);
        $this->set('d_ajax_items', $this->paginate('Item'));
    }
    

    一点不错的方式

    $this->paginate = array(
        'limit' => 8,
        'conditions' => array('Item.discover_order' => null, 'Item.moderated' => 1),
    );
    $this->set('d_ajax_items', $this->paginate('Item'));
    
        2
  •  1
  •   Leo    14 年前

    你已经试过什么了?我相信您可以有两个实例,但是您需要将参数直接传递到函数中 paginate() 而不是在类变量上设置它们 paginate .

    为了避免混淆,我几乎总是在调用本身中定义分页选项。

    function paginate($object = null, $scope = array(), $whitelist = array())
    

    如果省略$object并将数组作为第一个参数传递,则最后两个参数将向左移动。

    您是否尝试在第三个位置($whitelist)以数组的形式输入顺序和限制值?

    http://api13.cakephp.org/class/controller#method-Controllerpaginate

    http://api13.cakephp.org/view_source/controller/#line-1056

        3
  •  0
  •   Mauro Zadunaisky    14 年前

    如果你想的话,这不是一个很好的方法 unbostrusive javascript