如何删除sort&来自分页链接的方向键并应用控制器操作中指定的顺序

时间:2014-02-05 09:30:48

标签: cakephp pagination

我正在使用paramType的分页器组件querystring,并在从$this->paginate()获取结果之前指定了多个订单

$this->paginate['order'] = array(
    "field1" => "Asc",
    "field2" => "Desc",
    "field3" => "Asc",
);

$this->set('results', $this->paginate('ModelName'));

当我点击第2页链接时,它会生成一个类似?page=2&sort=field1&direction=Asc的网址我想从查询字符串中删除排序键,需要通过应用我指定的顺序来获取结果。

有人可以帮我吗?

由于

1 个答案:

答案 0 :(得分:-2)

如文档所示,您可以覆盖paginate方法:

/**
 * Overridden paginate method - group by week, away_team_id and home_team_id
 */
public function paginate($conditions, $fields, $order, $limit, $page = 1,
    $recursive = null, $extra = array()) {

    $recursive = -1;
    $group = $fields = array('week', 'away_team_id', 'home_team_id');
    return $this->find(
        'all',
        compact('conditions', 'fields', 'order', 'limit', 'page', 'recursive', 'group')
    );
}

或者,这取自文档:

控制用于订购的字段 默认情况下,可以使用模型上的任何列进行排序。这有时是不合需要的,因为它可以允许用户对未编制索引的列或计算成本高昂的虚拟字段进行排序。您可以使用PaginatorComponent :: paginate()的第3个参数来限制将对其进行排序的列:

$this->Paginator->paginate('Post', array(), array('title', 'slug'));

这将允许仅对标题和slug列进行排序。将排序设置为任何其他值的用户将被忽略。



http://book.cakephp.org/2.0/en/core-libraries/components/pagination.html