Paginate和Sort bug(s)?

时间:2016-07-11 15:03:02

标签: cakephp pagination cakephp-3.2

在我的控制器中,我的分页设置为2个字段。

public $paginate = [
  'limit' => 50,
  'order' => ['first_name', 'last_name']
];
$contacts = $this->paginate($this->Contacts);

这在第一页上工作正常,但由于我省略了默认方向=> 'ASC',因此Paginator链接根本不起作用:

/contacts?page=2&sort=0&direction=first_name

当我添加方向时,它可以工作,但当然只能按第一个字段排序,搞乱排序顺序。

/contacts?page=2&sort=Contacts.first_name&direction=ASC
  1. 是否应明确要求默认方向?
  2. 是否有一种方法可以在分页期间维护两个字段以进行排序?
  3. 按虚拟字段排序(例如full_name => first_name . ' ' . last_name)不像2.x

    那样有效

1 个答案:

答案 0 :(得分:1)

解决了以下两个问题:

将默认排序顺序设置为与虚拟字段相同:

public $paginate = [
  'order' => ['first_name', 'last_name']
];

然后只需将以下内容添加到View中,以防止paginator覆盖默认顺序,除非用户指定:

if (empty($_GET['direction'])) { $this->Paginator->options(['url' => ['direction' => null, 'sort' => null]]); }