在我的控制器中,我的分页设置为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
按虚拟字段排序(例如full_name => first_name . ' ' . last_name
)不像2.x
答案 0 :(得分:1)
解决了以下两个问题:
将默认排序顺序设置为与虚拟字段相同:
public $paginate = [
'order' => ['first_name', 'last_name']
];
然后只需将以下内容添加到View中,以防止paginator覆盖默认顺序,除非用户指定:
if (empty($_GET['direction'])) { $this->Paginator->options(['url' => ['direction' => null, 'sort' => null]]); }